如何在prepareForSegue之前调用didSelectRowAtIndexPath?
我正在制作iOS应用程序,它是tableview的基础。 这是我想要做的。 Tableview1 – > Tableview2一旦我selecttableCell之一,将显示新的tableView2。 我希望在显示新的tableView之前将单元格打开。 尽pipe如此,hilight是如此缓慢,因为加载新的tableView数据。 我抬头看这个。 prepareForSegue
的原因是在didSelectRowAtIndexPath
之前调用的。
那么你能告诉我如何在prepareForSegue
之前调用didSelectRowAtIndexPath
吗?
或者当单元格被选中时告诉我如何设置表格单元格。
祝一切顺利。
你正在用两种不同的方法来做到这一点。
1 – 第一select – 只使用故事板和准备赛报:
将原型单元连接到故事板中的第二个视图控制器(连接必须从单元开始,到第二个视图控制器结束)。 在这种情况下,您只能使用prepareForSegue方法而不使用didSelectRowAtIndexPath。 在prepareForSegue之后,第二个VC会自动推送。
2 – 第二个select – 使用didSelectRowAtIndexPath:
仅当您将第一个viewcontroller (而不是单元格)的segue连接到第二个viewcontroller时才使用didSelectRowAtIndexPath。 在didSelectRowAtIndexPath方法的结尾处,您必须调用performSegue。
- 让控制器 – >控制器继续
- 在didselectrowatindexpath中运行数据加载
- 完成后 – >执行你的继续
你需要的是以下function。 它将在prepareForSegue之前被调用。 首先,你需要在你的类中定义一个var,然后像下面这样设置它:
var selectedIndexPath: NSIndexPath = NSIndexPath() override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { selectedIndexPath = indexPath return indexPath }
最后你可以在preparedForSegue函数中使用这个值
这里是你应该如何设置你的视图控制器:
- 当视图控制器shell表视图1加载时,加载表视图1的数据。
- 在
tableView:didSelectRowAtIndexPath:
被调用的时候,使用performSegue:
来触发segue。 - 当视图控制器shell表视图2加载时,加载表视图2的数据。
这听起来像你可能会提前加载表视图2的数据—这就是为什么你看到滞后。 由于您正在使用数据加载绑定主线程,因此用户界面无法更新并显示蓝色高亮显示。
如果您在viewDidLoad
方法中加载数据,则当用户select表格视图单元格时,您将避免使用昂贵的加载。 你只应该告诉你的视图控制器在tableView:didSelectRowAtIndexPath:
方法中执行segue到详细视图控制器。