Monday, April 18, 2011

UITableView cellForRowAtIndexPath example - ObjC Objective C

A cellForRowAtIndexPath example code (contains implementation).When any tableViewCell object moves out of the screen, it is automatically collected by the tableView object for reuse. dequeueReusableCellWithIdentifier method tries to get a cell that matches the identifier from the pool of reused cell. To achieve maximum performance, you should always reuse tableViewCell. Following fragment shows an cellForRowAtIndexPath example code.Nearly all tableView:cellForRowAtIndexPath method takes this standard form.


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 이 문자열은 테이블 셀의 종류를 나타내는 키로 쓰인다.
    // Key to identify the kind of TableViewCell object.
    //
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

 
    // 테이블 뷰의 셀들이 스크롤돼서 화면에서 사라지면 재사용 가능한 셀의 뷰(queue)에 들어간다.
    // 새로운 행이 이전에 사라졌던 행 중에서 다시 사용하게 된다면 시스템은 끊임없이 이러한 뷰를 만들고 해제하는 부담을 피할수 있다.
    // 이러한 방법을 사용하기 위해서 디큐(dequeue)된 셀중에서 필요한 타입을 테이블 뷰에서 얻어야 한다. (SimpleTableIdentifier)
    // When any tableViewCell object moves out of the screen, it is 
    // automatically collected by the tableView object for reuse.
    // deueueReusableCellWithIdentifier method tries to get a cell
    // that matches the identifier from the pool of reused cell.
    // To achieve maximum performance, you should always reuse tableViewCell.
    //
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if(cell == nil)
    {
       // 재사용 가능하게 동일한 셀로 만든다.
       // No cells in reuse pool, so we have to create a new one.
       //
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewStyleDefault] reuseIdentifier:SimpleTableIdentifier] autorelease];
    }
    // 어떤 행의 값을 사용할 것인지 결정
    NSInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];
    return cell;
}