0

UIAlertview ボタンからビューコントローラーを表示しようとすると、非常に奇妙なエラーが発生しました。prsentViewController 行でクラッシュしました。バックトレースは、ビューのロードに失敗したことを示しています。どうすればこれを修正できますか? ソースコードは以下です。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView == _alertView) {
        switch (buttonIndex) {
            case 0:
            {
                [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
            }

                break;

            default:
            {
                NSString *nibName = IS_IPAD? NSStringFromClass([UINewUserAccountViewController class]) : [NSStringFromClass([UINewUserAccountViewController class]) stringByAppendingString:@"~iPhone"];
                UINewUserAccountViewController *newUserAccountViewController = [[UINewUserAccountViewController alloc] initWithNibName:nibName  bundle:nil];
                newUserAccountViewController.delegate = self;

                UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:newUserAccountViewController];
                [self presentViewController:navi animated:YES completion:nil];

            }
                break;
        }
    }

}
4

1 に答える 1

0

@rckoenes の助けを借りて、例外が発生したときに数回ヒットした後、最終的にエラーを見つけました。UIViewController loadFromNibName で停止するため、行

[NSStringFromClass([UINewUserAccountViewController class]) stringByAppendingString:@"~iPhone"]

nib 名を返しますが、その名前の xib ファイルでは、ルート ビューはファイル アウトレットではありません。ビューをファイルアウトレットにリンクすると、例外はなくなります。

于 2014-05-09T01:34:28.603 に答える