1

カスタムボタンを追加するカスタムビューを作成しました。このカスタムビューは、ナビゲーションコントローラーにプッシュするさらに別のビュー(iPhone用のKalカレンダー)のサブビューとして使用されます。これで、カスタムビューのボタンがIBActionに接続され、self.navigationControllerを呼び出して現在のビューをポップすることができなくなりました。

スーパービュー呼び出しの階層に対して[[sendersuperview]NavigationController]を試しましたが、そのようにも機能しません。

何かアイデアはありますか?

ありがとう

4

1 に答える 1

3

ビューは通常、ビューコントローラ(およびその結果として、そのスーパービューのビューコントローラのナビゲーションコントローラ)についての知識を持っていません。これは、通常は不要で不要なビューとビューコントローラの間に緊密な結合を導入するためです。

問題を解決する最も簡単な方法は、ビューの代わりにビューコントローラにボタンのアクションを処理させることです。それがデザインで機能しない場合は、カスタムビューのデリゲートプロトコルを設計し、ビューコントローラーをカスタムビューのデリゲートにすることを検討してください。次に、ビューはボタンのアクションメソッドのデリゲートメソッドを呼び出します。この後者の方法は、Cocoa全体で、たとえばUIScrollViewUIScrollViewDelegate)やUITableViewUITableViewDelegate)によってよく使用されます。

于 2010-03-02T00:00:47.283 に答える