Ali*_*Dev 3 objective-c master-detail universal ios
我在X-Code中开始了一个Master-Detail应用程序.我选择了通用,核心数据和git repo.当应用程序出现时,我进入了iphone故事板,添加了一个标签视图控制器,将它开始的导航/表格/详细信息视图移动到标签控制器中作为第三个标签(实际上我希望它是第四).然后我选择了标签控制器作为程序在iphone模式下应该开始的初始视图.它成功构建但不允许程序完成加载.出现的错误记录如下:
2013-05-11 21:35:00.302 FearlessAndThorough[6318:907] -[UITabBarController topViewController]: unrecognized selector sent to instance 0x1c592020
2013-05-11 21:35:00.306 FearlessAndThorough[6318:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController topViewController]: unrecognized selector sent to instance 0x1c592020'
*** First throw call stack:
(0x337f33e7 0x3b4ee963 0x337f6f31 0x337f564d 0x3374d208 0xc9e43 0x35662aa1 0x35662625 0x3565a833 0x35602d1f 0x356027ad 0x356021ef 0x3731a5f7 0x3731a227 0x337c83e7 0x337c838b 0x337c720f 0x3373a23d 0x3373a0c9 0x3565946d 0x356562b9 0xc9ab5 0x3b91bb20)
libc++abi.dylib: terminate called throwing an exception
(lldb)
Run Code Online (Sandbox Code Playgroud)
我希望有人之前已经这样做了,并且可以让我对设置选项卡视图控制器类型应用程序时要采取的正确步骤或步骤有所了解,然后将其转换为ipad的主要详细信息应用程序.
这是当前应用程序委托的didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;
UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)masterNavigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
} else {
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
您的问题是您在iPhone故事板的前面添加了一个标签栏控制器,但是在您的"else"子句中,您说窗口的根视图控制器是导航控制器 - 它不是,您添加的标签栏控制器是.如果您将该登录作为该else子句中的第二行,您将看到navigationController实际上是一个标签栏控制器,而不是导航控制器.那个else子句需要看起来像这样:
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController = tbc.viewControllers[3];
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
Run Code Online (Sandbox Code Playgroud)
我不确定tbc.viewControllers中的"3".我无法从您的描述中看出导航控制器所在的选项卡,因此您可能需要更改它.
| 归档时间: |
|
| 查看次数: |
3505 次 |
| 最近记录: |