作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我使用了一些 Storyboard References 来引入一些结构。现在我试图从代码中更改 ViewController,但我无法使用来自不同 Storyboard 的 ViewController。我的代码目前看起来像这样:
func showCommunityDetail(){
let storyBoard : UIStoryboard = UIStoryboard(name: "community", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "communityDetail") as! CommunityViewController
self.present(nextViewController, animated:true, completion:nil)
}
社区 Storyboard 包含 communityDetail Controller ,但在执行此代码时显示的 View 位于不同的 Storyboard 中。
如何在不同的 Storyboard 之间呈现?
更新
我将我的代码更新为以下行:
let detailViewController = UIStoryboard(name: "community", bundle: nil).instantiateViewController(withIdentifier: "communityDetail");
但是,现在我收到一个新错误:whose view is not in the window hierarchy!
最佳答案
在不同的 Storyboard中呈现 View Controller 。
1) 确保为每个 Storyboard中的条目 ViewController 设置了“Initial View Controller”属性。
展示它:
let vcToPresent = UIStoryboard(name: "StoryboardName", bundle: nil).instantiateInitialViewController();
// Ensure its of the type that you want, so that you can pass info to it
guard let specialVC = vcToPresent as? SpecialViewController else {
return
}
specialVC.someProperty = somePropertyToPass
self.present(specialVC, animated: true, completion: nil)
编辑:
要实例化一个不同的 View Controller (除了被标记为初始的 View Controller ),可以使用以下方法:
func instantiateViewController(withIdentifier identifier: String) -> UIViewController
文档链接:https://developer.apple.com/reference/uikit/uistoryboard/1616214-instantiateviewcontroller
请注意,您必须在界面构建器上为要使用此方法的 View Controller 设置标识符。
关于ios - 如何在 Storyboard 引用中呈现新的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974378/
我是一名优秀的程序员,十分优秀!