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 异常处理

在 Swift (2.0) 中正确处理 NSJSONSerialization (try catch)?

Swift 2.0 异常处理

在 Swift 2.0 中使用 NSFetchedResultsController

Swift 2.0:推断闭包类型错误