3

X-Code でマスター/ディテール アプリケーションを開始しました。オプションとして、ユニバーサル、コア データ、および git リポジトリを選択しました。アプリケーションが起動したら、iphone ストーリー ボードに移動し、タブ ビュー コントローラーを追加し、最初のナビゲーション/テーブル/詳細ビューを移動して、3 番目のタブとしてタブ コントローラーに配置しました (実際には、それを第4)。次に、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) 

誰かが以前にこれを行ったことがあり、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;
}
4

3 に答える 3

0
// Change your else part in appdelegate to this it may works.

else {

    UITabBarController *tabBarController = (UITabBarController *) self.window.rootviewController;

    // For third view in tabbar controller

    UINavigationController *navigationController = [tabBarController viewControllers] objectAtIndex: 2];

    navigationController = (UINavigationController *)self.window.rootViewController;
        MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;

}
于 2013-05-12T06:27:42.800 に答える