私はいくつかの異なるアプローチからこれを試しましたが、これは期待どおりに機能していません。これはハイブリッドiOSアプリケーションであり、画面の約半分がUIViewControllersとプライマリUIWebViewを備えています。UIWebViewイベントの処理、特にエラー処理に関しては、同様のロジックがたくさんあります。サブクラスは、表示されている画面を処理するために少し専門化されています。したがって、クラス図は大まかに次のようになります。
UIViewController
+- BaseWebController <-- this class should bind to UIWebView
+-- ScreenAController
+-- ScreenBController
+-- ...
BaseWebController.designer.csが本当に基本的なところ。実際、配線すると次のようになります。
[Register ("BaseWebController")]
partial class BaseWebController
{
[Outlet]
MonoTouch.UIKit.UIWebView WebView { get; set; }
void ReleaseDesignerOutlets ()
{
if (WebView != null) {
WebView.Dispose ();
WebView = null;
}
}
}
問題は次のとおりです。UIWebViewがWebViewインスタンスに適切にバインドされていないため、さまざまな例外が発生します。'セレクターsetWebViewの検索に失敗しました:ScreenAController'などのさまざまなメッセージが表示されますが、親クラス(ScreenAController)をバインドしようとして失敗したことになります。
質問:このバインディングがどのように機能するのか、何かが足りませんか?基本的に、私はこれを非常にDRYに保ち、重複するすべてのコードを基本クラスにプッシュしようとしています。そうしないと、同じ100行のワイヤーアップコードと各画面のエラーチェックを繰り返すことになります。
TIA。