私はこの時点でかなり簡単なiOS 5アプリを持っています。iOSアプリケーションデリゲートでwindow.rootViewControllerの型キャストが必要なのはなぜですか?
UINavigationControllerは、Interface Builderの初期View Controllerとして設定されています(とにかく、Interface Builderとも呼ばれますが...)。 UINavigationControllerは、そのrootViewControllerとして汎用のUITabBarControllerを持っています。
UINavigationControllerとUITabBarControllerの両方のデリゲートのAppDelegateを使いたいと思います。 AppDelegateをUINavigationControllerDelegateとUITabBarControllerDelegateの両方に準拠させました。すべてがうまくいく。しかし!
AppDelegateのアプリケーションで:didFinishLaunchingWithOptions:、私は何かハッキーをしているように感じる。私はself.window.rootViewControllerとself.window.rootViewController.topViewControllerを型変換して各コントローラの代理人を設定する必要があります。
私がタイプキャストしていない場合は、self.window.rootViewController私は代理人を設定できません。 topViewController(UITabBarController)と同じです。
Inferface Builderで初期ビューがUINavigationControllerであり、一般的なUIViewControllerではないと宣言した場合、どうして私はまだ型キャストする必要がありますか?これはハッキーでしょうか?
window.rootViewController
プロパティを呼び出す
'[self.window.rootViewController setDelegate:self]'を試したときに何を得ましたか? – dasblinkenlight
"'UIViewController'の表示されない@interfaceはセレクタsetDelegateを宣言します。"それはコンパイルされません。 –