如何获取TableView中的tapped对象的索引?

时间:2012-06-28 11:41:33

标签: ios indexing label tableview

我有一个带自定义单元格的tableView。在这些单元格中,有一个UILabel,它从NSMutableArray获取它的文本。我设置了一个GestureRecognizer来查看是否点击了这个标签。如果它被点击,我会转到另一个视图。

现在在与标签选择器相关联的方法中,我想获取NSMutableArray中与抽头标签对应的文本索引。我怎么能这样做?

这是一些销售代码: 在cellForRowAtIndexPath:方法中,这是我的工作:

    cell.Label.text = [tableLabelText objectAtIndex:indexPath.row];

    UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(goToViewControllerB:)];

    [cell.Label setUserInteractionEnabled:YES];
    [cell.Label addGestureRecognizer:tap];
    [tap release];

然后我显示一切......

这是goToViewControllerB方法:

- (void) goToViewControllerB:(id)sender {
    if (!viewControllerB) {
    viewControllerB = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
}
    navigationController = [[UINavigationController alloc] initWithRootViewController:viewControllerB];
    [self presentModalViewController:navigationController animated:YES];
}

如果我这样做,并且如果在我的viewControllerB中我修改了某些东西并返回到表视图,然后单击另一个标签,我将引导相同的viewControllerB,包含先前的修改。我想为每个标签显示一个新的viewControllerB。

我的想法是获取与tapped Label对应的tableLabelText的索引。每当我调用goToViewControllerB:时,我都可以创建一个ViewControllerB类型的新对象,并将其插入到NSMUtableArray中,在同一索引处......类似

if ([ViewControllerArray objectAtIndex: "here the index i'm looking for"]){
"show it" }
else {
"create it and insert it into ViewControllerArray at the right index" }

3 个答案:

答案 0 :(得分:1)

使用数组的indexOfObject方法。

int index = [yourArray indexOfObject:tappedLabel.text];

答案 1 :(得分:1)

对于您的UILabel,将其标记设置为整数(例如单元格的行) 在cellForRowAtIndexPath创建标签时,请使用label.tag = indexPath.row;

现在,在您的手势回调中,从与手势识别器对象相关联的视图中获取标记

答案 2 :(得分:1)

cellForRowAtIndexPath:

中设置此项
cell.textLabel.tag = indexPath.row.

并在您的tapGesture方法中查找手势识别器的视图标记。

int indexFromArray = gesture.view.tag

这是来自数据源数组的索引。 即使在更多单元格中具有相同的文本,也可以使用此方法。