2013-09-26 7 views
8

私はメインのストーリーボードに配置したビューコントローラを持っていますが、ビューコントローラを初期化してロードしようとすると、私が使用しているxcodeのバージョンは、実際に私が正しく取得したエラーを教えてくれませんが、私はそれが私にsigabrtシグナルを与えているのを見ました。なぜそれが動作していないのかわかりません。ストーリーボードからビューコントローラを初期化しようとしています

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SelectDateViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 

これは私がそれを呼び出した方法です。私が使った名前はすべて正しいものの、なぜクラッシュするのか分からない。

+0

を:)このヘルプには、あなたが開始するために絵コンテを可能にしましたか? – erdekhayser

+0

@foriinrangeawesomeうん、私はそうした。 –

答えて

0

[self presentModalViewController:vc animated:YES];は推奨されていません。

は試してみてください。 [self presentViewController:vc animated:YES completion:nil];

+0

それは非常にうまくその理由かもしれません。私はなぜそれが彼に警告を与えていないのだろうかと思う。 – erdekhayser

6

は(絵コンテもと)VCを確認するために、最後の行にブレークポイントを設定しゼロではありません。

presentModalViewControllerのviewController引数がnilの場合、クラッシュします。

両方ともnilの場合、ストーリーボードの名前が間違っている可能性が低くなります。

vcがnilの場合、識別子は正しくありません(コードまたはストーリーボードのいずれか)。 VCのストーリーボードID(スクリーンショットに囲まれている)があなたの説明と一致していることを確認してください。このためにクラス名を選択しないことが慣例です(ストーリーボードに複数のクラスがある場合など)。

ストーリーボードIDは大文字と小文字が区別され、一意である必要があります。私はそれがビューコントローラを選択し、編集を終了するために戻る(フィールドをクリックしないでください)を押すと、そのフィールドに名前を入力することを設定するための確かな方法を見つける。 Xcode 4から5への変換時にストーリーボードで何らかの破損が発生していることに気がつきました。そのため、plist/xmlへのダイビングも役に立ちます。

Storyboard ID

編集:また、これは呼び出されたときのタイミングが重要である 、 presentModalViewController not workingを参照してください。 メッセージを受け取ったView Controllerが既に表示されていることを確認してください(つまり、viewDidLoadではなくviewDidAppearで呼び出されます)。

アブドラで述べたように、あなたはおそらくに推奨されない方法をオフに移動する必要があります。この場合は完了ブロックは問題なくnilをすることができますが、VCがあってはならない

[self presentViewController:vc animated:YES completion:nil]; 

0

ストーリーボードから最初のViewControllerを設定しましたか? はいの場合は、ストーリーボードIDが同じであることを確認してください。 あなたが直接存在ストーリーボードをすることができます使用するかのViewControllerにそれのために

希望を、コードを書く必要が却下されていない場合は、アプリを作成したときに

関連する問題