Когда вы говорите B_Controller().goToC()
, вы создаете новый экземпляр из B_Controller
, вы не ссылаетесь на существующий экземпляр, который был создан с помощью сеанса goToB
.Кроме того, поскольку ваш новый экземпляр B_Controller
не создается из раскадровки, он ничего не знает о сегментах.
Вам необходимо сохранить ссылку на экземпляр 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.