我有一组具有多个实例变量的对象(name
,address
,number
等)。我还有一个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
获取行号并从数组中获取指定的对象。这会更可行吗?
答案 0 :(得分:4)
在tableView:didSelectRowAtIndexPath:
中,您只需使用[listings objectAtIndex:indexPath.row]
即可获取所选对象,并将其传递给详细视图控制器。
(您绝不应尝试将表格视图单元格用作数据源。)
答案 1 :(得分:2)
由于您直接从阵列位置显示列表,因此一旦按下该行,就会以相同的方式再次显示列表。
在tableView:didSelectRowAtIndexPath:
中,只需执行[listings objectAtIndex:indexPath.row]
即可获取相关对象并将其发送至DetailViewController