swift 2.0中navigationController中nib的AddSubview(为啥这么难?)
Posted
技术标签:
【中文标题】swift 2.0中navigationController中nib的AddSubview(为啥这么难?)【英文标题】:AddSubview from nib in navigationController in swift 2.0 (why is it so hard?)swift 2.0中navigationController中nib的AddSubview(为什么这么难?) 【发布时间】:2015-08-24 18:31:35 【问题描述】:这是在 Objective-C 中运行良好的代码。
SubViewVC *subviewcontroller = [[SubVC alloc] initWithNibName:@"SubVC" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:subviewcontroller];
[navController setView:subviewcontroller.view];
[self.view addSubview:subviewcontroller.view];
为什么这么难做到这么快?
在我的 MasterViewController (navigationController) 中,我有一个 UIButton,当我点击它时,我想将此子视图 (ViewController) 添加到其他所有内容之上,或者更好地从侧面呈现它以覆盖 MasterViewController 的一半(即像抽屉一样)。
在我的 ViewController.swift 中:
class func instanceFromNib() -> UIView
return UINib(nibName: "ViewController", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UIView
在我的 MasterViewController.swift 中
let view = ViewController.instanceFromNib()
self.view.addSubview(view) //Error here: cannot addSubview
【问题讨论】:
执行 Swift 代码时看到了什么?如果有任何错误,请在您的问题中说明。 @TomElliott 我什至在运行应用程序之前就收到了错误...请参阅编辑后的 Q。 目前的代码似乎是正确的。检查“ViewController”是否是您应用中某处的 nib/xib 的名称。 【参考方案1】:没关系,我将它连接到 StoryBoard 中并使用了 segue。
【讨论】:
【参考方案2】:让 view = ViewController.instanceFromNib()
self.view.addSubview(view) //这里出错:不能addSubview
问题在于这种情况下的“视图”是一个 ViewController。您可能应该执行以下操作:
let viewController = ViewController.instanceFromNib()
self.view.addSubview(viewController.view)
【讨论】:
以上是关于swift 2.0中navigationController中nib的AddSubview(为啥这么难?)的主要内容,如果未能解决你的问题,请参考以下文章
UILocalNotifcation 未在 swift 2.0 中触发
在 Swift (2.0) 中正确处理 NSJSONSerialization (try catch)?