我知道有这种方法来检测选择了哪个UITableViewCell:
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
}
但我不想知道选定的行,我想知道单元格的内容是什么,并根据我想要做的事情。那么有没有办法标记一个单元格? 为了更好地理解,假设我有四个单元格1,2,3和4.当我重新排序它们并且我的订单是1,4,2,3并且我想在另一个视图中显示该值时,它会显示给我当我选择第二行时,2而不是4。
答案 0 :(得分:5)
你出租车电话
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
来自tableView:didSelectRowAtIndexPath:
实现的方法来获取单元格,如下所示:
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
...
}
但是,这不是访问(尤其是修改)表格内容的正确方法。相反,您应该访问表中获取其信息的模型,并在那里进行所有修改。这样,当当前单元格的视觉效果从屏幕滚动并返回时,更改将“粘住”。
答案 1 :(得分:1)
据我所知,有三种方法,
1)通过调用[tableView cellForRowAtIndexPath:indexPath]来访问该单元格。 现在,您可以将单元格数据与模型进行比较。即,您可以使用NSPredicate来获取模型中所选行数据的索引值(从中填充表格单元格)
2)当您重新排序表格行时,只需更改您的模型。例如。第4行变为第2行,通过简单地从第4个位置移除对象并添加到第2个位置来重新排序模型(可能是ArrayList)。因此,当您删除表格行时,它将与该行的模型数据的索引号相同。
3)您可以标记每个视图。但这是代码冗余。你可以通过这样做来实现这样的目标。而不是这个选项,我会选择第一或第二(我认为第二个选项最好是使用你的模型/数组只保留记录。)
答案 2 :(得分:0)
您可以在didselect委托方法中访问所选单元格。
UITableViewCell *lab = [tableView cellForRowAtIndexPath:indexPath];
UILabel *selectedCellLabelText = lab.textLabel.text;
答案 3 :(得分:0)
首先,您可以在第二个类中定义NSString的属性以访问与特定单元格内容对应的值,arrayData是存储值的数组,例如1,2,3,4,5然后在你的第一堂课写下这段代码: -
- (void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath
{
SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondView.stringValue = [arrayData objectAtIndex:indexPath.row];
[self.navigationController pushViewController:secondView animated:YES];
}