0

n00b の質問を前もってお詫び申し上げます。iOSを始めたばかりです!

webViewController をナビゲーション コントローラーにプッシュしようとしています。

mudWebViewController *webViewController = [[mudWebViewController alloc] initWithNibName:nil bundle:nil];
[[webViewController webView] setDelegate:webViewController];
[[self navigationController] pushViewController:webViewController animated:YES];

しかし、デリゲート メッセージにログが表示されないため、これはうまくいかないようです。

viewDidLoad: メソッドでデリゲートを設定すると、正常に動作します。

その時点で webView は実際には存在しないと思いますが、なぜですか? コントローラーを初期化すると、webView も初期化されるべきではありませんか?

viewDidLoad: は、このようなものを設定する適切な場所ですか?

4

1 に答える 1

1

initWithNibName は、明らかに nib ファイルを使用してビューを構築しているため、nil であってはなりません。

mudWebViewController *webViewController = [[mudWebViewController alloc] initWithNibName:@"webViewController" bundle:nil];
[[self navigationController] pushViewController:webViewController animated:YES];

また、オブジェクトがコードでまだ初期化されていない可能性があるため、デリゲートを適切に設定できない可能性があるため、デリゲートは、前のクラスからではなく、Interface ビルダーまたは viewDidLoad デリゲートのビュー自体から設定する必要があります。

于 2012-06-02T23:03:11.630 に答える