当我尝试以编程方式转到另一个 Storyboard时,我使用
//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);
但这并没有在下一个 Storyboard上显示导航 Controller 。所以我做了
HomeViewController.presentViewController(vc, animated: true, completion: nil);
所有抛出的都是
Extra argument 'animated' in call
有什么想法吗?
最佳答案
关于您的第一个问题的一些观察:
对于第一个问题,您可能需要确保
vc
不是nil
(例如, Storyboard ID 为home 的场景
被发现):if let vc = storyboard.instantiateViewControllerWithIdentifier("home") as? UIViewController { presentViewController(vc, animated: true, completion: nil) } else { println("home not found") }
我建议您仔细检查“家庭”场景的“ Storyboard ID”的拼写和大小写。
顺便说一句,如果您在 IB 中为第二个 Storyboard 中的第一个场景选中了“Is Initial View Controller”复选框,那么您也可以:
let vc = storyboard.instantiateInitialViewController()
您可以直观地确认此设置,因为场景将有一个从左侧指向它的小“初始转场”箭头:
如果您正在对目标场景执行
presentViewController
,该场景本身嵌入导航 Controller 中,那么您应该呈现该导航 Controller (即给导航 Controller 的场景“ Storyboard ID”或将其指定为“是初始 View Controller ”),而不是嵌入到该导航 Controller 中的场景。
关于您的第二个错误,那是因为您正在调用实例方法 presentViewController
,但引用的可能是类名 HomeViewController
,而不是实例。这种语法根本没有任何意义。
self.presentViewController(...)
的前一种语法可能是正确的,但很可能找不到 Storyboard 或场景,因为其中一个或另一个的名称(很可能场景的“ Storyboard ID”)或因为记分板未包含在包中(尽管我认为这会产生不同的错误)。
关于ios - 在调用中获取额外参数 'animated',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695415/