我正在制作iOS应用程序,这是tableview基础。
这就是我想要做的。
Tableview1 - > Tableview2
一旦我选择了tableCell之一,就会显示新的tableView2。
我想在显示新的tableView之前使单元格变暗。
尽管如此,由于加载了新的tableView数据,hilight非常慢。
我抬头看了看。 prepareForSegue
之前调用didSelectRowAtIndexPath
的原因。
那么你能否告诉我如何在didSelectRowAtIndexPath
之前致电prepareForSegue
?
或告诉我如何在选择单元格时设置表格单元格。
一切顺利。
答案 0 :(得分:20)
您正在以两种不同的方式进行网格划分。
1 - First Alternative - 仅使用故事板和prepareForSegue:
将原型单元连接到storyboard中的第二个viewcontroller(连接必须从单元格开始,然后在第二个viewcontroller上结束)。 在这种情况下,您必须使用仅 prepareForSegue方法而不是didSelectRowAtIndexPath。第二个VC在prepareForSegue之后自动推送。
2 - 第二种选择 - 使用didSelectRowAtIndexPath:
仅当您将segue 从第一个viewcontroller (而不是从单元格)连接到第二个viewcontroller时,才使用didSelectRowAtIndexPath。 在didSelectRowAtIndexPath方法结束时,您必须调用performSegue。
答案 1 :(得分:1)
答案 2 :(得分:1)
您需要的是以下功能。它将在准备之前调用。首先,您需要在类中定义一个var,然后在此函数中设置它,如下所示:
var selectedIndexPath: NSIndexPath = NSIndexPath()
override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
selectedIndexPath = indexPath
return indexPath
}
最后你可以在preparedForSegue函数中使用这个值
答案 3 :(得分:0)
以下是设置视图控制器的方法:
tableView:didSelectRowAtIndexPath:
时,使用performSegue:
启动segue。听起来你可能会过早地加载Table View 2的数据 - 这就是你看到滞后的原因。由于您在加载数据时占用主线程,因此用户界面无法更新并向您显示蓝色突出显示。
如果您使用viewDidLoad
方法加载数据,则当用户选择表格视图单元格时,您将避免昂贵的加载。您应该只告诉视图控制器在tableView:didSelectRowAtIndexPath:
方法中执行segue到详细视图控制器。