我正试图以与此类似的方式发生一场声音:
viedDidLoad(){
if 0==0 {
*segue happens*
}
}
但我看到的所有建议都很陈旧,使用的performSegueWithIdentifier
已不再有效。如果它是有用的信息,我也使用导航栏,但是,它不需要使用此ViewController,因为如果用户单击按钮(即接受和拒绝),ViewController只应更改视图。
答案 0 :(得分:1)
您应该在viewDidAppear
而不是viewDidLoad
中执行您的segue,因为在创建ViewController对象并且尚未将其附加到窗口时调用viewDidLoad。
答案 1 :(得分:0)
正如@livenplay所提到的,你不应该偏离viewDidLoad
。
我会更进一步,并建议您根本不进行segue,而是从代码中实例化视图控制器,然后手动推送/显示它。
这将为您带来以下好处:
一些示例代码可以演示我的意思:
class MyViewController: UIViewController {
static func initialize(with someArgument: Any) -> MyViewController {
let myVC = UIStoryboard(name: "main", bundle: nil).instantiateViewController(withIdentifier: "MyVCIdentifier") as? MyViewController
// do something here with the passed argument
return myVC! // force unwrapping for brevity... don't do this in your code :)
}
}
class StartingViewController: UIViewController {
override func viewDidLoad() {
let myVC = MyViewController.initialize(with: "someArgument")
// I propose that this...
self.navigationController?.pushViewController(myVC, animated: true)
self.present(myVC, animated: true, completion: nil)
//... is much better and more re-usable than this..
self.performSegue(withIdentifier: "MyVCSegueIdentifier", sender: self)
}
}