如何在数组中包含UITableViewCell引用对象?

时间:2013-08-02 20:20:57

标签: iphone ios objective-c uitableview

我有一组具有多个实例变量的对象(nameaddressnumber等)。我还有一个UITableViewController,其表视图中填充了每个对象的name变量。

我还创建了一个DetailViewController,当tableView:didSelectRowAtIndexPath:选择了对象的指定单元格时,它应该显示这些对象所拥有的其余信息。问题是,这些单元格只引用了单元格的对象'name变量。

我该如何解决此问题?我是否需要对单元格进行子类化,以便我可以为每个单元格提供对整个对象的引用?或者有更简单的方法吗?

这是我当前的tableView:cellForRowAtIndexPath:方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if(!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = [[listings objectAtIndex:indexPath.row] objectForKey:@"listingName"];
    return cell;
}

更新:我刚刚发现我可以从indexPath获取行号并从数组中获取指定的对象。这会更可行吗?

2 个答案:

答案 0 :(得分:4)

tableView:didSelectRowAtIndexPath:中,您只需使用[listings objectAtIndex:indexPath.row]即可获取所选对象,并将其传递给详细视图控制器。

(您绝不应尝试将表格视图单元格用作数据源。)

答案 1 :(得分:2)

由于您直接从阵列位置显示列表,因此一旦按下该行,就会以相同的方式再次显示列表。

tableView:didSelectRowAtIndexPath:中,只需执行[listings objectAtIndex:indexPath.row]即可获取相关对象并将其发送至DetailViewController