如何确保 didSelectRowAtIndexPath 打开正确的视图

Posted

技术标签:

【中文标题】如何确保 didSelectRowAtIndexPath 打开正确的视图【英文标题】:How to ensure didSelectRowAtIndexPath opens correct View 【发布时间】:2015-08-25 03:27:48 【问题描述】:

我知道在用户选择一个单元格后如何将他们发送到一个新单元格,但是如果我的单元格的顺序发生变化,因为我正在从 Parse 检索数据,因此对于每个新单元格,行号都会发生变化。

当用户选择某个单元格时,如何确保将用户发送到正确的页面?这是我目前正在使用的,但我知道必须有比硬编码每个可能的选项更好的解决方案..

有什么建议吗?

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    if indexPath.section == 0 && indexPath.row == 1 
        self.performSegueWithIdentifier("toSettingsPage", sender: self)
    

【问题讨论】:

【参考方案1】:

为了我理解您的问题,我建议您使用NSMutableDictionary 来存储所有用户信息数据,并在didSelectRowAtIndexPath 功能上,您将使用indexPath 找到正确的用户信息。

【讨论】:

【参考方案2】:

您的意见:

表格视图 一个索引路径(节、行)有序对

你的输出:

标识转场的字符串

一个理想的数据结构是字典。

首先,请注意表格视图输入始终是相同的(您似乎只关心一个表格视图 - 数据源协议被编写为处理任意数量的表格视图,但大多数人使用一对一)。

其次,考虑您的键和值:您的键是索引路径。事实上,索引路径分解为一个Integer,因为它总是相同的部分,这类似于上面描述的表格视图的情况。

所以你的字典的类型是:Dictionary<Integer, String>

现在,我们不直接使用字典,而是创建一个函数来包装它并调用函数segueForIndexPathInDefaultTableView

private let seguesForIndexPaths:[Integer:String] = [0:"segue0",1:"segue1",2:"segue2"]

private func segueForIndexPathInDefaultTableView(indexPath: NSIndexPath) 
    return self.seguesForIndexPaths[indexPath.row]


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)       
    self.performSegueWithIdentifier(self.segueForIndexPathInDefaultTableView(indexPath: indexPath), sender:self)

【讨论】:

既然用户是创建帖子的人,我该如何创建segue?用户创建帖子-> 当另一个用户点击它时,下一个视图需要显示原始帖子中的正确信息。这有意义吗?

以上是关于如何确保 didSelectRowAtIndexPath 打开正确的视图的主要内容,如果未能解决你的问题,请参考以下文章

具有多个视图控制器的 UITableView

Swift - Alamofire Post,如果为真则更改图像

如何确保OA系统的安全性?

如何确保 WSASend() 将发送数据?

如何确保消息正确地发送至RabbitMQ? 如何确保消息接收方消费了消息?

如何确保脚本由特定版本的 python 执行? [复制]