iphone - 表示 - xcode viewcontroller title



viewDidLoadでself.navigationControllerがnullになるのはなぜですか? (1)

ビューコントローラのビューは、そのコントローラの-viewメソッド/プロパティに初めてアクセスするときに読み込まれます。 ビューがロードされた後、 viewDidLoadメソッドが呼び出されます。 これはかなり簡単です。 また、ビューがオフスクリーンである間にメモリ警告を受け取った場合、ビューを複数回ロード/アンロードできることを覚えておく必要があります。

したがって、 viewDidLoadはビューコントローラがナビゲーションコントローラに挿入されたことを意味しません。 ビューコントローラをナビゲーションコントローラにプッシュするプロセスでは、そのviewにアクセスして読み込まれますが、プッシュが完了する前に viewされます。 したがって、 navigationControllerプロパティが更新される前に、 viewDidLoadが明示的に呼び出されています。

また、ビューコントローラをナビゲーションコントローラにプッシュする前に、コードの他の部分がビューコントローラのビューにアクセスしている可能性も考慮する必要があります。

だからviewDidLoadはあなたがやっていることをするのに間違った場所です。 おそらく、 viewDidAppear:ようなメソッドを使用したいと思うでしょうviewDidAppear:それは、ビューコントローラのビューが呼び出されたときにビュー階層の一部であることを知っているからです。

似たような質問がたくさんあることはわかっていますが、具体的にこれに対処するものは見つかりません。

viewDidLoadで呼び出されたときself.navigationController nullにself.navigationControllerますが、 viewDidLoad外部から呼び出されたときには正しくなりましたか?

これはNSLog(@"%@",self.navigationController); 最初はviewDidLoadで呼び出され、2番目はNSLog(@"%@",self.navigationController);を呼び出すメソッドでボタンをインターフェイスに追加しますNSLog(@"%@",self.navigationController);

NavApp[31524:11003] (null)
NavApp[31524:11003] <UINavigationController: 0x6e21190>

私はこの行動のためのいくつかの簡単な説明が必要であることを知って、私はそれが何であるかについてだけ興味があります。 ありがとう!





ipad