iOS 框架 - 已加载 nib 但未设置视图出口
Posted
技术标签:
【中文标题】iOS 框架 - 已加载 nib 但未设置视图出口【英文标题】:iOS Framework - Loaded the nib but the view outlet was not set 【发布时间】:2015-06-16 20:50:25 【问题描述】:我看到了许多与我类似的问题,但没有解决方案,这可能是因为我正在创建一个 ios 框架,然后将其导入到项目中。
基本上,我有一个 SignIn 框架,如果用户未登录,我想显示一个 webview。
我的正常项目会调用我的框架,如果我需要进行身份验证,SignIn 框架会告诉我加载某个 .xib 以登录。
在我的框架中,这个 .xib 被命名为 SignIn.xib 它包含一个视图控制器,里面有一个 webview,如您所见:
现在,在我的框架中,我初始化视图控制器并调用委托的函数来加载 signInView:
NSString* const frameworkBundleID = @"iOSLoginSDK";
NSBundle* bundle = [NSBundle bundleWithIdentifier:frameworkBundleID];
SignInViewController* signInViewController = [[SignInViewController alloc] initWithNibName:@"SignIn" bundle:bundle];
[self.delegate loadSignInView:signInViewController];
在我的项目中,我只需执行以下操作,该方法将由 delagate 调用:
-(void) loadSignInView:(CYMSignInViewController *)signInViewController
[self presentViewController:signInViewController animated:YES completion:nil];
但是,当我尝试运行应用程序时出现以下错误:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "SignIn" nib but the view outlet was not set.
我正在使用 XCode 6.3.2
编辑 1:我认为问题的发生是因为我的 xib 中有一个视图控制器。我可以这样做吗?
编辑 2:这是我的 .xib 中的网点
Edit3:我尝试重新创建笔尖,但仍然遇到同样的错误。
这是我做的步骤:
-
我创建了一个空的 xib
我添加了一个视图控制器,然后将我的元素添加到它上面
我创建了一个视图控制器文件并将其设置为视图控制器的自定义类
我错过了什么吗?
【问题讨论】:
您的 nib 中有一个简单的错误 - 最外面的UIView
需要连接到 UIViewController 对象的 view
出口。只需选择 UIView 并按住 control 拖动到 UIViewController 对象并选择view
outlet
我的最外层,你是指 View Controller,因为那是最外层还是 FileOwner?因为它看起来像,请参阅edit2
您能否添加显示对象层次结构的左侧 NIB 导航器面板的屏幕截图?文件所有者应该是您的 UIViewController 类 SignInViewController
- 实际 NIB 组件层次结构中的第一个对象应该是 UIView - 此视图将包含您的工具栏和 UIWebView
我认为这就是我所拥有的:imgur.com/6oE7ViH
从屏幕截图看起来很正确。它看起来像一个非常简单的笔尖 - 也许尝试重新创建它。
【参考方案1】:
好的,基本上,您似乎不能在独立的 .xib 中拥有视图控制器。我认为是因为 .xib 在某种程度上是一个视图控制器(有人可以澄清一下)。
我所做的是,我创建了一个视图,正确设置了我的设计,然后,我将我的 ViewController 类文件分配给了文件的所有者。这样,它现在可以工作了。
【讨论】:
您应该这样做 - 抱歉,您的屏幕截图中并不清楚您做了什么。您可以使用容器将另一个 UIViewController 添加到视图中,但该 UIViewController 实例通常与其自己的 NIB 或 Storyboard 场景相关联以上是关于iOS 框架 - 已加载 nib 但未设置视图出口的主要内容,如果未能解决你的问题,请参考以下文章
iOS6 xib 错误“加载了“ViewController”笔尖,但未设置视图出口。'”
如何在 iOS 中调试“[UIViewController _loadViewFromNibNamed:bundle:] 加载了“SearchView”笔尖但未设置视图出口”?
UIViewController _loadViewFromNibNamed:bundle: 加载了“视图”笔尖,但未设置视图出口。
UIViewController _loadViewFromNibNamed:bundle 加载了“XXXViewController”笔尖,但未设置视图出口。 -*使用故事板*