[英]Swift: PrepareForSegue running but not loading ViewController
我仍然試圖在iOS
鏈接UIViewControllers
等。 我有一些荒謬的細胞問題,但這對我來說是完全沒有任何訓練就被拋到深處的錯!
無論如何,我目前有一個prepareForSegue
完美地運行每一行,然后應該通過UINavigationController
到達目的地。 但是目標UIViewController
沒有顯示,應用程序靜默崩潰 - 根本沒有錯誤。
有沒有辦法根據經驗獲得某種類似崩潰的潛在原因列表?
已經排除了“檢查segue拼寫”和“不在ViewDidLoad中執行segues”之類的事情。
我覺得清單對於像我這樣的新手來說是一個很好的方法來了解編碼中的陷阱,但是如果它不可能回答或者答案太多那么請告訴我,我會解決這個問題。
謝謝。
可以通過實施協議來修復檢查清單。檢查以下WWDC:
https://developer.apple.com/videos/play/wwdc2015-408/
此外,關於segues,有幾點需要注意(同樣適用於OSX)......
注意:
i)根據定義,segue是一個部分到另一個部分(電影中的場景或音樂中的一部分)之間的過渡。 因此,當涉及到查看控制器時,它們應該是一種“中間人”......
i.e. ViewController1 <-- segue ->> ViewController2
ii)當你prepareForSegue
並覆蓋prepareForSegue
你告訴你的代碼你想要自己處理轉換。 即在UITabviewController(或NSStabViewController)中,您可以覆蓋其中一些要在覆蓋中實現自己的默認行為
第1部分PrepareForSegue
- 在它發生之前:
這是你實例化,配置,設置等...你的視圖控制器..如果他們已經設置,那么你應該在這里超級調用。
//i.e. super.PrepareSegueForIdentifier(identifier)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "something" {
// Do your thing here
// MARK: IFYES
} else {
prepareForSegue(segue, sender: sender)
}
}
如果你有“待定”視圖控制器的預備工作,那么在我標記為“IFYES”的“if”語句的第一部分中進行設置。 你可以設置動畫,顏色,尺寸等等......
完成此操作后,還有另一種方法:
performSegueWithIdentifier:
我使用的一個例子是:
override func performSegueWithIdentifier(identifier: String, sender: AnyObject?) {
if (identifier == "yourIdentifier") {
Do something here
} else {
super.performSegueWithIdentifier(identifier, sender: sender)
}
}
這是具有yourIdentifier
標識符的yourIdentifier
實際執行的操作。 即當您的viewController調用一個動作或函數時:
func someFunction(){
self.performSegueWithIdentifier("yourIdentifier", sender: senderObjectName)
}
當然,如果您確保控制器之間的segue ...具有正確的標識符和類型......
好吧,看看高級和低級的類,代表等錯誤后發現它是Swift / XCode本身的錯誤。
罪魁禍首就是頁面上的TextView,它需要將其默認文本設置為空白才能加載頁面。 需要在viewDidLoad中設置任何默認文本。
完整的解決方案包含在這里 - iOS 9 Segue導致應用程序凍結(沒有崩潰或錯誤拋出)
知道是否有任何方法可以查看在視圖init期間拋出的錯誤日志仍然是一件好事,但在這種情況下,這一切都歸結為視圖中的一個無關緊要的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.