0

我有一个带有自定义单元格的 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 中修改了某些内容并返回到 Table View,然后单击另一个标签,我将被引导到相同的 viewControllerB,其中包含以前的修改。我确实想为每个标签显示一个新的 viewControllerB。

我的想法是获取与点击的标签相对应的 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" }
4

3 回答 3

1

将此设置在您的cellForRowAtIndexPath:

cell.textLabel.tag = indexPath.row.

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

int indexFromArray = gesture.view.tag

那是您从数据源数组中获得的索引。即使您在多个单元格中有相同的文本,您也可以使用此方法。

于 2012-06-28T12:22:06.023 回答
1

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

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

于 2012-06-28T11:43:13.920 回答
1

数组的使用indexOfObject方法。

int index = [yourArray indexOfObject:tappedLabel.text];
于 2012-06-28T11:42:57.023 回答