如何在prepareForSegue之前调用didSelectRowAtIndexPath?

时间:2012-11-05 15:50:06

标签: ios

我正在制作iOS应用程序,这是tableview基础。 这就是我想要做的。 Tableview1 - > Tableview2 一旦我选择了tableCell之一,就会显示新的tableView2。 我想在显示新的tableView之前使单元格变暗。 尽管如此,由于加载了新的tableView数据,hilight非常慢。 我抬头看了看。 prepareForSegue之前调用didSelectRowAtIndexPath的原因。

那么你能否告诉我如何在didSelectRowAtIndexPath之前致电prepareForSegue

或告诉我如何在选择单元格时设置表格单元格。

一切顺利。

4 个答案:

答案 0 :(得分:20)

您正在以两种不同的方式进行网格划分。

1 - First Alternative - 仅使用故事板和prepareForSegue:

将原型单元连接到storyboard中的第二个viewcontroller(连接必须从单元格开始,然后在第二个viewcontroller上结束)。 在这种情况下,您必须使用 prepareForSegue方法而不是didSelectRowAtIndexPath。第二个VC在prepareForSegue之后自动推送。

2 - 第二种选择 - 使用didSelectRowAtIndexPath:

仅当您将segue 从第一个viewcontroller (而不是从单元格)连接到第二个viewcontroller时,才使用didSelectRowAtIndexPath。 在didSelectRowAtIndexPath方法结束时,您必须调用performSegue。

答案 1 :(得分:1)

  1. 为控制器>控制器
  2. 制作segue
  3. 在didselectrowatindexpath中运行数据加载
  4. 完成后 - >执行你的segue

答案 2 :(得分:1)

您需要的是以下功能。它将在准备之前调用。首先,您需要在类中定义一个var,然后在此函数中设置它,如下所示:

var selectedIndexPath: NSIndexPath = NSIndexPath()

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

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

答案 3 :(得分:0)

以下是设置视图控制器的方法:

  1. 当装载表视图1的视图控制器加载时,加载表视图1的数据。
  2. 在调用tableView:didSelectRowAtIndexPath:时,使用performSegue:启动segue。
  3. 当装载表视图2的视图控制器加载时,加载表视图2的数据。
  4. 听起来你可能会过早地加载Table View 2的数据 - 这就是你看到滞后的原因。由于您在加载数据时占用主线程,因此用户界面无法更新并向您显示蓝色突出显示。

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