【发布时间】:2015-02-21 17:14:42
【问题描述】:
我收到了错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'Storyboard () 不包含带有标识符的视图控制器 'SBMenu''
在我的 AppDelegate 上,我检查用户是否已连接并启动:
- 如果用户尚未连接,则故事板 ID 为“SBLogin”的视图控制器
- 如果用户已连接,则使用故事板 ID 为“SBMenu”的拆分视图控制器
我使用 xcode 6.1.1,sdk 8.1,部署目标 7.0
在模拟器 iOS 8.1 上,一切都很好,我没有收到错误。
在模拟器 iOS 7.0.3 或 7.1 上,我收到错误
代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//...
if(self.token != nil){
//crash
self.viewController = (UIViewController *)[mainSB instantiateViewControllerWithIdentifier:@"SBMenu"];
}else{
//don't crash
self.viewController = (UIViewController *)[mainSB instantiateViewControllerWithIdentifier:@"SBLogin"];
}
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
[self.window setRootViewController:self.viewController];
[self.window setBackgroundColor:[UIColor whiteColor]];
[self.window makeKeyAndVisible];
return YES;
}
我已经查看了其他帖子中的提示:
- 只有一个故事板
- 本地化中只有“基础”
- 故事板 ID 已正确设置
- 在构建之前测试从模拟器中删除应用程序
- 清理项目
【问题讨论】:
-
你能展示你的代码实例化
mainSB吗?在目标的“部署信息”中的“主界面”下显示什么? (另外,除了在 Interface Builder 中检查视图控制器的 ID“SBMenu”,尝试实际删除 ID 并重新键入它,包括点击 return,然后重新构建...) -
从那里文档:“唯一标识故事板文件中的视图控制器的标识符字符串。您在配置故事板文件时在 Interface Builder 中设置给定视图控制器的标识符。此标识符不是视图控制器对象本身的属性,仅由情节提要文件用于定位视图控制器。”您是否在 viewController 中设置了标识符
SBMenu? -
@MattGibson 实例化 mainSB 的代码: UIStoryboard *mainSB = [UIStoryboard storyboardWithName:@"Main" bundle:nil];在“主界面”下:字段为空,当我将其设置为 Main 时,我得到“无法为 UIMainStoryboardFile 'Main' 实例化默认视图控制器 - 也许未设置指定的入口点?” -> 入口点未设置,因为我想选择它。
-
@MattGibson 我还测试了删除、重新输入、回车(代码和情节提要也发生了变化)、在模拟器上删除应用程序、清理、重建 -> 我遇到了同样的问题
-
@Zaph 不是标识符,而是故事板 ID,我在一些帖子上读到:“pre xcode 4.4 Identifier, post xcode 4.5 Storyboard ID”。
标签: ios objective-c xcode