2013. 2. 5. 14:21ㆍ언어/IPhone
TableViewController의 초기화시 발생하는 절차
// 클래스 선언부
@interface TableViewController : UITableViewController {
NSMutableArray *maFileList;
}
// 클래스 구현부
// 맨처음 이 함수가 불려진다.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
// 두번째로 열의 갯수를 알려주도록 이 함수가 불려진다.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [maFileList count];
}
// 세번째로 열의 갯수만큼 아래의 함수가 불려진다.
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Configure the cell...
// 여기에서 indexAtPosition: 0은 섹션번호를 가리키며 1은 섹션내의 열번호를 가리킨다.
// 간단한 섹션번호는 항상 0으로 간주하므로 단일 섹션을 갖는다.
NSUInteger unNum = [indexPath indexAtPosition: 1 ];
// cell의 식별자를 지정하게 되는데 여기서는 번호를 지정하여 NSString으로 변환하도록 한다.
NSString *strCellIdentifier = [maFileList objectAtIndex: unNum ];
// 지정한 식별자를 대입하여 cell이 존재하는지 확인한다.
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:strCellIdentifier ];
// 지정한 식별자에 해당하는 cell이 존재하지 않으므로 새로 할당하여 셋팅한후 리턴값으로 넘긴다.
if( cell == nil )
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:strCellIdentifier ] autorelease ];
}
[[cell textLabel] setText:strCellIdentifier];
UIFont *font = [UIFont fontWithName:@"Courier" size:12.0];
[[cell textLabel] setFont:font];
return cell;
}
// TableView의 Row 삭제를 위해서는 아래와 같이설정하고
[self.tableView setEditing:YES animated:YES ]; // 이렇게 설정하면 자동으로 설정모드가 된다.
// 삭제가 끝나면 아래와 같이 설정한다.
[self.tableView setEditing:NO animated:YES ];
TableViewController에서 삭제시 발생하는 절차
// Cell을 선택하고 삭제버튼을 클릭하는 순간 아래의 절차가 이루어 진다.
// 1. commitEditingStyle 함수가 불려진다. 거기서 테이블내의 해당 Cell을 삭제하도록 한다.
// 데이터리스트로 관리하고 있는 NSMutableArray에서 해당 객체를 삭제한다.
// 2. numberOfSectionsInTableView가 두번 불려진다. 이는 디폴트로 1을 리턴하도록 해놓았다.
// 3. numberofRowsInSection가 불려진다. 이는 NSMutableArray의 Row갯수를 리턴하도록 해놓았다.
// 4. cellForRowAtIndexPath가 불려진다. 이는 객체가 하나 삭제되었으므로 맨 밑의 Row에 하나를 더 추가하기 위해서이다.
// 스크롤을 하게 될경우 cellForRowAtIndexPath는 계속해서 불려진다.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete )
{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath ];
for (int nIdx = 0; nIdx < [maFileList count]; nIdx ++ )
{
NSString *strCompare = [maFileList objectAtIndex: nIdx];
NSMutableArray *maArray = [[NSMutableArray alloc]init];
[maArray addObject:indexPath];
[self.tableView deleteRowsAtIndexPaths:maArray withRowAnimation:UITableViewRowAnimationTop ];
// 삭제가 끝나면 release 해주는 것을 잊지말것
[maArray release];
'언어 > IPhone' 카테고리의 다른 글
xcode textfield next 구현 (0) | 2013.01.15 |
---|---|
Xcode에서 Web Page get 하기 (0) | 2013.01.11 |
iOS5 에서 OpenCV 사용하기 (0) | 2012.03.16 |
iphone에서 opencv를 사용해보자 (0) | 2012.03.08 |
스티븐 잡스 사망.. (0) | 2011.10.06 |