0

私はiPhoneの初心者です。ボタンを押したときにビューを開こうとしています。私のクラス「ReaderViewController」で次のコードを書きました:

- (void)tappedInToolbar:(ReaderMainToolbar *)toolbar emailButton:(UIButton *)button
{
#ifdef DEBUGX
NSLog(@"%s", __FUNCTION__);
#endif

#if (READER_ENABLE_MAIL == TRUE) // Option

instantiateViewControllerWithIdentifier:@"searchView"];

if (printInteraction != nil) [printInteraction dismissAnimated:NO]; // Dismiss

SearchViewController *searchController = [self.storyboard instantiateViewControllerWithIdentifier:@"searchView"];


searchController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
searchController.modalPresentationStyle = UIModalPresentationFullScreen;

[self presentModalViewController:searchController animated:YES];


[searchController release];


#endif // end of READER_ENABLE_MAIL Option
}

このコントローラー「SearchViewController」のビューを開くタイミングが必要で、ストーリーボードで SearchViewController のビューに識別子名「searchView」を指定しましたが、実行すると次の例外が発生します。

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

何か助けて?? ありがとうございます。

4

2 に答える 2

1

ストーリーボードに識別子searchViewを持つビュー コントローラーがないため、インスタンス化は失敗し、

instantiateViewControllerWithIdentifier:

メソッドは nil を返します。ストーリーボードの設定を再確認し、識別子と名前は一般に大文字と小文字が区別されることに注意してSearchViewくださいsearchView

また、その場合もあるかもしれません

self.storyboard

それ自体は適切に初期化またはインスタンス化されていないため、nil です。

編集:コードからストーリーボードを作成していましたが、実際にはそうではありませんでした。解決策は、UIStoryboard を手動でインスタンス化することでした。

あなた自身のコメントについては、割り当てたほうがいいです。そうしないと、self.storyboard = Storyboardこれらのエラーが引き続き発生します...

于 2012-07-29T14:10:37.797 に答える
0

self.storyboard私にはのように見えますnil。これは、それに渡すすべてのメッセージnilも結果になることを意味します。

于 2012-07-29T14:11:36.130 に答える