【发布时间】:2015-01-02 17:30:56
【问题描述】:
我正在尝试从 xCode 6 模板开发一个主从 iOS 应用程序(仅限 iPad)。它在 iOS 8 上运行良好,但在 iOS 7.0 或 7.1 上运行时会在我评论的运行时崩溃:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
// this line throws a "[MasterViewController topViewController]: unrecognized selector sent to instance 0x796dde90"
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
splitViewController.delegate = self;
return YES;
}
重现错误:
- 打开 xCode 6
- 文件 > 新建 > 项目
- 选择“iOS 应用”下方的“主从应用”
- 将项目目标更改为 7.0
- 在模拟器或设备上运行
我进行了调查,似乎 iOS 7 和 iOS 8 上的对象类型不同:
- 在 iOS8 上,self.window.rootViewController 是一个 UISplitViewController
- 在 iOS7 上,self.window.rootViewController 是第一个 UINavigationController(左)
为什么会有这种行为?
【问题讨论】:
-
您是在 iPhone 还是 iPad 上进行测试?
标签: ios objective-c xcode ipad master-detail