【发布时间】: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 对象并选择viewoutlet -
我的最外层,你是指 View Controller,因为那是最外层还是 FileOwner?因为它看起来像,请参阅edit2
-
您能否添加显示对象层次结构的左侧 NIB 导航器面板的屏幕截图?文件所有者应该是您的 UIViewController 类
SignInViewController- 实际 NIB 组件层次结构中的第一个对象应该是 UIView - 此视图将包含您的工具栏和 UIWebView -
我认为这就是我所拥有的:imgur.com/6oE7ViH
-
从屏幕截图看起来很正确。它看起来像一个非常简单的笔尖 - 也许尝试重新创建它。
标签: ios objective-c xcode xcode6 ios-frameworks