iOS 框架 - 加载了 nib 但未设置视图出口

iOS Framework - Loaded the nib but the view outlet was not set

我看到了很多与我类似的问题,但没有解决方案有效,这可能是因为我正在创建一个 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:我尝试重新创建笔尖,但仍然出现相同的错误。

以下是我执行的步骤:

  1. 我创建了一个空的 xib
  2. 我添加了一个视图控制器,然后我在上面添加了我的元素
  3. 我创建了一个视图控制器文件并将其设置为视图控制器的自定义 class

我是不是遗漏了什么?

好的,基本上,您似乎不能在独立的 .xib 中拥有视图控制器。我认为是因为 .xib 在某种程度上是一个视图控制器(有人可以澄清)。

我所做的是,我创建了一个视图,正确设置了我的设计,然后,我将我的 ViewController class 文件分配给了文件所有者。这样,它现在可以正常工作了。