所以這裏是我的情況,我有兩個視圖控制器:viewControllerA和tableViewControllerB。在我的viewControllerA上,我有一個按鈕。而當它被按下時,它會調用當prepareforsegue被調用?
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函數?
謝謝
你爲什麼要調用self.viewDidLoad()?通常它會自動調用。這是你自己的功能嗎? – 2015-04-05 00:11:31
在prepareForSegue之前,不應該調用表視圖函數。在新控制器被實例化之後,但在視圖加載之前調用prepareForSegue。您不應該在cellForRowAtIndexPath中自己調用viewDidLoad。 – rdelmar 2015-04-05 00:15:47
您確定在您的prepareForSegue函數中self.event不是零嗎? – ad121 2015-04-05 00:16:21