如何引用在didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法中单击的单元格对象?
我有一个UISplitViewController,在MasterView中我有一个表,其中cell.tag =来自sqlite数据库的主键(即表从db填充)。我能够在上面的方法中捕获click事件,但是我无法看到如何传递单元对象,或者我怎么能引用它来获取cell.tag。最终,目标是通过Master / Detail委托将该id传递给详细视图,然后根据Master中的id将数据加载到DetailView中。
任何提示都表示赞赏!
编辑:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
cell.textLabel.text = NSLocalizedString(@"Detail", @"Detail");
Entry *entry = [self.entries objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[NSString stringWithFormat:@"%@",entry.title]];
cell.tag = entry.entryID;
return cell;
}
答案 0 :(得分:4)
在didSelectRowAtIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
}
请注意,询问表cellForRowAtIndexPath:
是否返回一个单元格,而要求控制器tableView:cellForRowAtIndexPath:
运行委托方法。
答案 1 :(得分:4)
因为您已经有一系列条目,所以您也可以写如下。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Entry *entry = [self.entries objectAtIndex:[indexPath row]];
}
我认为这比cellForRowAtIndexPath更受欢迎:因为
答案 2 :(得分:2)
您可以使用方法cellForRowAtIndexPath从NSIndexPath获取UITableViewCell。
答案 3 :(得分:0)
你可以通过在NSMutableArray中保存所有id然后通过这个方法在另一个类中传入它。
classInstanceName.IntVariableName=[[taskIdArray objectAtIndex:indexPath.row]intValue]