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:我尝试重新创建笔尖,但仍然出现相同的错误。
以下是我执行的步骤:
- 我创建了一个空的 xib
- 我添加了一个视图控制器,然后我在上面添加了我的元素
- 我创建了一个视图控制器文件并将其设置为视图控制器的自定义 class
我是不是遗漏了什么?
好的,基本上,您似乎不能在独立的 .xib 中拥有视图控制器。我认为是因为 .xib 在某种程度上是一个视图控制器(有人可以澄清)。
我所做的是,我创建了一个视图,正确设置了我的设计,然后,我将我的 ViewController class 文件分配给了文件所有者。这样,它现在可以正常工作了。
我看到了很多与我类似的问题,但没有解决方案有效,这可能是因为我正在创建一个 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
- 我添加了一个视图控制器,然后我在上面添加了我的元素
- 我创建了一个视图控制器文件并将其设置为视图控制器的自定义 class
我是不是遗漏了什么?
好的,基本上,您似乎不能在独立的 .xib 中拥有视图控制器。我认为是因为 .xib 在某种程度上是一个视图控制器(有人可以澄清)。
我所做的是,我创建了一个视图,正确设置了我的设计,然后,我将我的 ViewController class 文件分配给了文件所有者。这样,它现在可以正常工作了。