[英]different viewcontroller segue
我希望我的應用程序可以從ViewControll A到b,以及b到c(a,b,c是獨立的viewcontroller)“自動”選擇,所以我做到了:
在A_ViewController定義了一個計時器,可以每隔一分鍾從A到B到C進行切換。
在StoryController上為ViewController A和B設置segue:
A_ViewController:“ goToB”和“ goToC”
B_ViewController:'goToC'
並在A_ViewController中覆蓋“覆蓋func prepare(for segue:.....)”。
碼:
class A_ViewController: ViewController {
...//in Timer
//first 1 minute
performSegueWithIdentifier("goToB", sender: self)
//second minute
B_Controller(). goToC()
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToB" {
let B_Controller = segue.destination as! B_ViewController
B_ViewController.msg = "From AtoB"
}
if segue.identifier == "goToSearchLocation" {
let C_ViewController = segue.destination as! C_ViewController
C_ViewController.msg = searchWord
}
}
class B_Controller: ViewController {
...
func goToC() {
performSegueWithIdentifier("goToC", sender: self)
}
}
運行APP后,可以先執行segue(成功顯示ViewController B),但是此后,它始終顯示錯誤消息,如下所示:
由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'Receiver()沒有標識為'goToC'的segue
但是我真的在storyBoard上設置了一個segue“ goToC”。 我不知道如何解決。 該代碼已經由Google搜索修改。
當您說B_Controller().goToC()
您正在創建B_Controller
的新實例 ,而不是指goToB
segue創建的現有實例。 此外,由於不是從情節B_Controller
中創建新的B_Controller
實例,因此它對segues一無所知。
您需要存儲對要在屬性中顯示的B_Controller
實例的引用。 然后,您可以使用該屬性來調用goToC
函數。
class A_ViewController: ViewController {
var bController: B_Controller?
...//in Timer
//first 1 minute
performSegueWithIdentifier("goToB", sender: self)
//second minute
self.bController?.goToC()
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToB" {
self.bController = segue.destination as! B_ViewController
self.bController.msg = "From AtoB"
}
if segue.identifier == "goToSearchLocation" {
let C_ViewController = segue.destination as! C_ViewController
C_ViewController.msg = searchWord
}
}
class B_Controller: ViewController {
...
func goToC() {
performSegueWithIdentifier("goToC", sender: self)
}
}
您可能需要重新設計代碼; 在B中使用一個新的計時器呈現C可能比在A中使用單個計時器要干凈得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.