UITableView 함수 관련 설명

2013. 2. 5. 14:21언어/IPhone

출처 : http://codecrue.egloos.com/m/1865094


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 indexAtPosition1 ];

   // cell의 식별자를 지정하게 되는데 여기서는 번호를 지정하여 NSString으로 변환하도록 한다. 

NSString *strCellIdentifier = [maFileList objectAtIndex: unNum ];

    // 지정한 식별자를 대입하여 cell이 존재하는지 확인한다. 

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:strCellIdentifier ];

      // 지정한 식별자에 해당하는 cell이 존재하지 않으므로 새로 할당하여 셋팅한후 리턴값으로 넘긴다. 

if( cell == nil )

{

cell = [[[UITableViewCell allocinitWithFrame:CGRectZero reuseIdentifier:strCellIdentifier ] autorelease ];

}

[[cell textLabelsetText:strCellIdentifier];

UIFont *font = [UIFont fontWithName:@"Courier" size:12.0];

[[cell textLabelsetFont: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로 지정함으로써 여러개의 객체를 삭제할 수 있음을 알수 있다.

NSMutableArray *maArray = [[NSMutableArray alloc]init];

[maArray addObject:indexPath];


      [self.tableView deleteRowsAtIndexPaths:maArray withRowAnimation:UITableViewRowAnimationTop ];

        // 삭제가 끝나면 release 해주는 것을 잊지말것 

        [maArray release];


}

출처 : http://codecrue.egloos.com/m/1865094

'언어 > 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