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”笔尖,但未设置视图出口。 -*使用故事板*