如何在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。

  1. 让控制器 – >控制器继续
  2. 在didselectrowatindexpath中运行数据加载
  3. 完成后 – >执行你的继续

你需要的是以下function。 它将在prepareForSegue之前被调用。 首先,你需要在你的类中定义一个var,然后像下面这样设置它:

 var selectedIndexPath: NSIndexPath = NSIndexPath() override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { selectedIndexPath = indexPath return indexPath } 

最后你可以在preparedForSegue函数中使用这个值

这里是你应该如何设置你的视图控制器:

  1. 当视图控制器shell表视图1加载时,加载表视图1的数据。
  2. tableView:didSelectRowAtIndexPath:被调用的时候,使用performSegue:来触发segue。
  3. 当视图控制器shell表视图2加载时,加载表视图2的数据。

这听起来像你可能会提前加载表视图2的数据—这就是为什么你看到滞后。 由于您正在使用数据加载绑定主线程,因此用户界面无法更新并显示蓝色高亮显示。

如果您在viewDidLoad方法中加载数据,则当用户select表格视图单元格时,您将避免使用昂贵的加载。 你只应该告诉你的视图控制器在tableView:didSelectRowAtIndexPath:方法中执行segue到详细视图控制器。