当我尝试以编程方式转到另一个故事板时,我使用
//Pop user to next screen
let storyboard = UIStoryboard(name: "HomeViewController", bundle: nil);
let vc = storyboard.instantiateViewControllerWithIdentifier("home") as UIViewController;
self.presentViewController(vc, animated: true, completion: nil);
但是,这并没有在下一个故事板上显示导航控制器。所以我做了
HomeViewController.presentViewController(vc, animated: true, completion: nil);
所有抛出的都是
额外的争论'动画'在电话中
有什么想法吗?
答案 0 :(得分:2)
关于你的第一个问题的几点意见:
对于第一个问题,您可能需要确保vc
不是nil
(例如,找到故事板ID为home
的场景):< / p>
if let vc = storyboard.instantiateViewControllerWithIdentifier("home") as? UIViewController {
presentViewController(vc, animated: true, completion: nil)
} else {
println("home not found")
}
我建议您仔细检查#34; Storyboard id&#34;的拼写和大小写。对于&#34;家庭&#34;场景。
顺便说一句,如果您已经检查过&#34;是初始视图控制器&#34; IB中的复选框,用于第二个故事板中的第一个场景,然后您可以选择:
let vc = storyboard.instantiateInitialViewController()
您可以在视觉上确认此设置,因为场景会有一点&#34;初始segue&#34;从左边指向它的箭头:
如果您正在对目标场景进行presentViewController
,其本身就是嵌入在导航控制器中,那么您应该呈现该导航控制器(即给出导航控制器的场景) &#34;故事板ID&#34;或将其指定为&#34;是初始视图控制器&#34;),而不是嵌入在该导航控制器中的场景。
关于您的第二个错误,因为您正在调用实例方法presentViewController
,但是正在引用可能是类名HomeViewController
的内容,而不是实例。这种语法根本没有任何意义。
以前self.presentViewController(...)
的语法可能是正确的,但很可能找不到故事板或场景,或者因为一个或另一个的名称(很可能是场景&#34;&#34;故事板ID&#34;)或因为记分板未包含在捆绑中(尽管我认为会产生不同的错误)。