获得额外的争论'动画'在电话中

时间:2014-11-02 02:27:59

标签: ios xcode swift

当我尝试以编程方式转到另一个故事板时,我使用

//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);

所有抛出的都是

  

额外的争论'动画'在电话中

有什么想法吗?

1 个答案:

答案 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;从左边指向它的箭头:

    initial view controller

  • 如果您正在对目标场景进行presentViewController,其本身就是嵌入在导航控制器中,那么您应该呈现该导航控制器(即给出导航控制器的场景) &#34;故事板ID&#34;或将其指定为&#34;是初始视图控制器&#34;),而不是嵌入在该导航控制器中的场景。

关于您的第二个错误,因为您正在调用实例方法presentViewController,但是正在引用可能是类名HomeViewController的内容,而不是实例。这种语法根本没有任何意义。

以前self.presentViewController(...)的语法可能是正确的,但很可能找不到故事板或场景,或者因为一个或另一个的名称(很可能是场景&#34;&#34;故事板ID&#34;)或因为记分板未包含在捆绑中(尽管我认为会产生不同的错误)。