cellForRowAtIndexPath返回自定义单元格?

时间:2011-07-19 13:29:02

标签: iphone objective-c cocoa-touch

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // ...
    PlanetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PlanetCell_ID"];
    return cell;
}

如果您创建自定义UITableViewCell(在本例中为PlanetTableViewCell),可以通过返回的方法返回该对象(UITableViewCell *),还是我应该做的其他事情?

3 个答案:

答案 0 :(得分:1)

  

如果你创建一个自定义的UITableViewCell(在这种情况下是PlanetTableViewCell),通过返回的方法(UITableView *)返回该对象是可以接受的,还是我应该做的其他事情呢?

你可能意味着:

  

通过返回的方法返回该对象(UITableViewCell *),

如果是这样,那么这是完全合法和合理的。

事实上,PlanetTableViewCell来自UITableViewCellPlanetTableViewCell 的所有实例也属于UITableViewCell类型(is-a relationship)在OOP)。

答案 1 :(得分:0)

是的,这是返回单元格的正确方法。

但是你也应该检查你的“dequeue”是否返回了一个有效的单元格对象。如果没有,你需要创建一个。

此方法也是您应该使用标题,附件等配置单元格的地方。

示例代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // ...
    PlanetTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PlanetCell_ID"];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.titleLabel.text = @"Cell Title";
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}

答案 2 :(得分:0)

使用自定义单元格

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        simpleTableIdentifier = @"dashboard_logintimeCell_ipad";
    }
    else
    {
        simpleTableIdentifier = @"dashboard_logintimeCell";
    }
    dashboard_logintimeCell *cell = (dashboard_logintimeCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib =[[NSBundle mainBundle]loadNibNamed:simpleTableIdentifier owner:self options:nil];
        cell = [nib objectAtIndex:0];
    }
/*here you cell object get
like
cell.lable.text=@"yourlabeltext";
*/

    cell.backgroundColor=[UIColor clearColor];
    return cell;
}