1

現在、アプリケーションに導入 (チュートリアル) セクションを実装しようとしています。いつでもそれを表示できるオプションをユーザーに提供したいと考えています。私のアプリの主要部分は UIViewController XIB ファイル ( ViewController_iPhone.xibViewController_iPad.xib) で構成されており、入門ビューの目的で、ストーリーボードを使用する方が簡単であることがわかりました。簡単にまとめると、デバイスの種類に応じて、メインのViewController(XIB)からストーリーボード内の開始ViewControllerに切り替えようとしています->これはすべてUIButtonタップで始まります。

ストーリーボード内で個々のストーリーボード ID を割り当てたので、iPad、iPhone、または iPhone-4inch のいずれであっても、適切なビューが読み込まれます。

ストーリーボード ID: 3-Slide1(iPad)、4-Slide1(iPhone)、5-Slide1(iPhone-4inch)。

スクリーンショット

ViewController.m内のボタン コードは次のとおりです。

NSString *nibName;
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
            nibName = @"3-Slide1";
        } else {
            if ([UIScreen mainScreen].bounds.size.height == 480.0) {
                nibName = @"4-Slide1";
            } else {
                nibName = @"5-Slide1";
            }
        }
        
        IntroViewController *introViewController = [self.storyboard instantiateViewControllerWithIdentifier:nibName];
        
        [self presentViewController:introViewController animated:YES completion:nil];

SIGABRT エラー:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Application tried to present a nil modal view controller on target
<ViewController: 0x20865170>.

このエラーが表示されるのはなぜですか?

注: 同じ一般的な SIGABRT エラーの投稿が多数ありますが、すべて異なる問題があるようです。

4

1 に答える 1

1

モーダルにプッシュしている場合、View ControllerからInfo View Controllerにつながるセグエがあるのはなぜですか。

私は単純に、View Controller に個別のセグエを作成し (いずれにせよ、1 つは別のストーリーボード ファイルにあります)、セグエに名前を付け、ロジックを使用して正しいセグエを決定します。次に、performSegueWithIdentifier:ではなく使用しますinstantiateViewControllerWithIdentifier

(nib 名は実際には nib のファイル名を参照していると思います。確かではありませんが、セグエ メソッドはとにかくこれを行う正しい方法です。)

于 2013-03-24T21:21:23.823 に答える