什么时候准备被召唤?

时间:2015-04-05 00:08:43

标签: ios xcode swift

所以这是我的情况,我有两个视图控制器: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函数?

由于

1 个答案:

答案 0 :(得分:4)

链是这样的。

  1. 首先调用prepareForSegue
  2. 然后调用viewDidLoad
  3. 然后调用cellForRowAtIndexPath
  4. 我猜问题就是你的行

    self.viewDidLoad()
    

    自动调用此函数。我刚刚尝试了其余的代码并且工作正常。