navigationController
は、一般的なUIViewControllerのプロパティです。あなたがのUIViewController *にdelegate
をキャストした場合、エラーが消えます:あなたはより良いdelegate
が実際のUIViewControllerのインスタンスであることを確認してくださいと思います
[((UIViewController *)delegate).navigationController setNavigationBarHidden:NO];
注意を。そうしないと、アプリがクラッシュします。
EDIT:
((UIViewController *) delegate).navigationController;
なぜ、ネストされた括弧:私の頭の上から、上記の例を使用してCのポインタをキャストするには3つの方法は、ありますか。 (UIViewController *) delegate.navigationController
は演算子の優先順位のために(UIViewController *) (delegate.navigationController)
に相当するためです。
[(UIViewController *) delegate navigationController];
ここでは、UIViewControllerにデリゲートをキャストしてメッセージを送信します。
UIViewController *myViewController = (UIViewController *) delegate;
[myViewController navigationController]; // or myViewController.navigationController;
これらはすべて機能的に同等です。私は手足に出て、それを選択するスタイルの問題だと言います。
は、デリゲートのnavigationControllerのプロパティですか?ドット表記でプロパティにアクセスすることしかできません。 – jakev
私はこれを持っています:メインアプリケーションデリゲート> RootViewController> MyClass ... navigationControllerは主なアプリケーションデリゲートのプロパティですが、self.navigationControllerを使用してRootViewControllerからアクセスできます。今私はMyClassにいる。 RootViewControllerはMyClassのデリゲートです。 MyClassからnavigationControllerにアクセスするにはどうしたらいいですか? – SpaceDog