![](/img/trans.png)
[英]Can a UITabBarController be a segue.destinationViewController?
[英]viewDidLoad() of segue.destinationViewController called twice before prepareForSegue()
所以我想做的是通過didSelectRowAtIndexPath中的prepareForSegue方法的sender參數從tableViewController將對象發送到collectionViewController,但是由於某種原因,該collectionViewController的viewDidLoad方法在prepareForSegue之前被調用了兩次。 這是tableViewController中的相關代碼:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let challenge = dataModel.challenges[indexPath.row]
performSegueWithIdentifier("ShowChallengeSegue", sender: challenge)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
...
else if segue.identifier == "ShowChallengeSegue" {
let controller = segue.destinationViewController as! ChallengeViewController
controller.challenge = sender as! Challenge
}
}
添加一堆打印語句后,依次發生以下情況:
我不知道為什么會這樣,不勝感激。
編輯 -我用tableViewController替換了collectionViewController,並且看起來一切正常,因此可能與UICollectionViewController有關。
您必須從單元而不是整個控制器那里獲取了segue,以便兩次執行segue
請從控制器中獲取密碼,然后嘗試
要么
添加此代碼
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
return false;
}
@格沃齊·索科洛夫斯基
在情節提要中檢查您的xib文件。 我認為您從按鈕或任何其他視圖鏈接了segue。 應該使用UIViewcontroller設置segue,然后可以調用performSegueWithIdentifier
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.