我有一个带自定义单元格的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" }
答案 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
这是来自数据源数组的索引。 即使在更多单元格中具有相同的文本,也可以使用此方法。