呼叫

2014-11-02 166 views
0

“动画”当我尝试去到另一个故事板获得额外的参数编程我用呼叫

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

和所有的抛出是

呼叫

任何想法 '动画'

额外的参数?

回答

2

关于你的第一个问题,一对夫妇的意见:

  • 对于第一个问题,您可能希望确保vc不是nil(例如,随着home故事板ID的一幕被发现) :

    if let vc = storyboard.instantiateViewControllerWithIdentifier("home") as? UIViewController { 
        presentViewController(vc, animated: true, completion: nil) 
    } else { 
        println("home not found") 
    } 
    
  • 我建议你仔细检查为“故事板ID”拼写和大小写的“家”的场景。

  • 顺便说一句,如果你选中了“在初始视图控制器”复选框,在IB的第一个场景在你的第二个故事板,那么你可以做交替:

    let vc = storyboard.instantiateInitialViewController() 
    

    您可以直观地确认此设置因为现场将有一个小“初始赛格瑞”箭头指向到它从左边:

    initial view controller

  • 如果你正在做一个presentViewController到目的地场景本身就嵌入在导航控制器中,那么你应该提供那个导航控制器(即为导航控制器的场景提供“故事板ID”或将其指定为“初始视图控制器”),而不是嵌入到导航控制器中的场景。

关于你提到的第二个错误,那是因为你调用一个实例方法presentViewController,但引用的是大概一个类名,HomeViewController,而不是一个实例。这个语法根本没有任何意义。

以前的语法与self.presentViewController(...)可能是对的,但更有可能故事板或场景没有找到,或者是因为一个或另一个的名称(很可能是场景的“故事板ID”)或因为记分牌不是包含在捆绑包中(尽管我认为这会产生不同的错误)。

+0

好吧,如果我将标签拖入下一个视图控制器,我可以看到它。这只是没有显示的导航控制器。 – user302975 2014-11-02 02:46:43

+0

您必须为该导航控制器提供其自己的独特故事板ID,并在代码中引用_that_(或者,对于导航控制器的场景,请检查“是初始视图控制器”复选框,然后使用“instantiateInitialViewController”语法)。 – Rob 2014-11-02 02:48:51

+0

这就是我正在使用的第二行。我已经在界面生成器中将故事板ID设置为'home' – user302975 2014-11-02 02:52:01