所以这是我的情况,我有两个视图控制器:viewControllerA和tableViewControllerB。在我的viewControllerA上,我有一个按钮。当它被按下时,它会调用
self.performSegueWithIdentifier("toControllerB", sender: self)
此外,我写了一个prepareforSegue函数,如下所示:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "toControllerB"){
var controllerB = segue.destinationViewController as tableViewControllerB
controllerB.event = self.event
}
在我的tableViewControllerB中,我有一个如下所示的函数
var event = nil
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
self.viewDidLoad()
var cell = tableView.dequeueReusableCellWithIdentifier("controllerBCell") as? ControllerBCell ?? ControllerBCell()
//some code
print(event)
return cell
}
当我运行我的应用程序时,似乎这个tableview函数在ControllerA中的prepareforSegue函数之前被调用。因此"事件"变量是零。因此,我想知道是否可以在controllerB中的tableview函数之前调用prepareforSegue函数?
由于
答案 0 :(得分:4)
链是这样的。
我猜问题就是你的行
self.viewDidLoad()
自动调用此函数。我刚刚尝试了其余的代码并且工作正常。