TableView:如何从 didSelectRowAtIndexPath 例程中选择另一行的值

Posted

技术标签:

【中文标题】TableView:如何从 didSelectRowAtIndexPath 例程中选择另一行的值【英文标题】:TableView: How to select another row's value from didSelectRowAtIndexPath routine 【发布时间】:2011-10-22 16:41:21 【问题描述】:

当调用 didSelectRowAtIndexPath 时,很容易使用以下方法获取单元格的文本值: UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; entryText = cell.textLabel.text;

但是,我在弄清楚如何同时从另一行获取单元格文本值时遇到了问题。例如,如果用户点击第 0 行,上面会从第 0 行获取单元格文本。但我需要从第 1 行和第 2 行获取单元格文本。

我该怎么做?

【问题讨论】:

【参考方案1】:

只需向您的模型询问数据即可。你永远不应该使用视图来存储数据。这对于表格视图单元格尤其重要,因为当用户将单元格滚动出屏幕时,视图中的数据可能会从一个时刻转移到另一个时刻。

【讨论】:

【参考方案2】:

如果您为这些单元格创建自己的 IndexPath 变量,例如:

NSIndexPath *indexPath1 = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:indexPath.section];
UITableViewCell *cell1 = [self.tableView cellForRowAtIndexPath:indexPath1];
NSString *cell1Text = [NSString stringWithString: cell1.textLabel.text];

NSIndexPath *indexPath2 = [NSIndexPath indexPathForRow:indexPath.row+2 inSection:indexPath.section];
UITableViewCell *cell2 = [self.tableView cellForRowAtIndexPath:indexPath2];
NSString *cell2Text = [NSString stringWithString: cell2.textLabel.text];

这应该可以解决问题。

【讨论】:

完美。谢谢!不过,还有一个问题。我的表有多个部分。我如何提取该值,而不是硬编码 inSection 编号? 如果行在同一节中,则使用发送的 NSIndexPath NSIndexPath *indexPath1 = [NSIndexPath indexPathForRow:1 inSection:indexPath.section]; 谢谢大家。效果很好。最后一个问题是如何提取节标题文本? 像其他人一样,你真的应该从你的数据模型中提取这个。但是,如果您必须这样做,我将创建一个 NSMutableArray,并在您创建节标题时将一个字符串对象添加到数组中。然后在需要时将其拉出并从 indexPath 中获取节 id。你能把它标记为答案吗?)。【参考方案3】:

这实际上取决于您如何存储表的数据源。如果它在一个数组中,那么您只需索引数组即可获取值。

【讨论】:

以上是关于TableView:如何从 didSelectRowAtIndexPath 例程中选择另一行的值的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从 TableView 执行 segue

核心数据:如何从警报中更新 TableView 字段?

如何使用 Swift 从 tableview 和 sqlite3 中删除

如何从 URL 在 TableView 中添加图像

如何从 SearchBar 中获取 Tableview 中所有项目的当前项目的索引

如何从 BehaviorRelay observable 更新 tableView?