Xamarin.ios 将MonoTouch与子类UIViewController don';我不能按预期绑定

Xamarin.ios 将MonoTouch与子类UIViewController don';我不能按预期绑定,xamarin.ios,monodevelop,xamarin,Xamarin.ios,Monodevelop,Xamarin,我尝试了几种不同的方法,但效果不理想。这是一个混合iOS应用程序,大约一半的屏幕UIViewController带有主UIWebView。处理UIWebView事件有很多类似的逻辑,特别是在错误处理方面。子类稍微专门化一些,以处理显示的屏幕。因此,类图大致如下: UIViewController +- BaseWebController <-- this class should bind to UIWebView +-- ScreenAController

我尝试了几种不同的方法,但效果不理想。这是一个混合iOS应用程序,大约一半的屏幕UIViewController带有主UIWebView。处理UIWebView事件有很多类似的逻辑,特别是在错误处理方面。子类稍微专门化一些,以处理显示的屏幕。因此,类图大致如下:

UIViewController
  +- BaseWebController   <-- this class should bind to UIWebView
      +-- ScreenAController
      +-- ScreenBController
      +-- ...
问题是:由于UIWebView没有正确地绑定到WebView实例,因此出现了各种异常。我收到了各种消息,比如“在ScreenController上找不到选择器setWebView:on ScreenController”,但归结起来(我认为)它试图绑定父类(ScreenController),但失败了

问题:我是否遗漏了这个绑定的工作原理?从本质上讲,我试图保持这一点非常干燥,并将所有重复的代码推送到基类。否则,我将在每个屏幕上重复相同的100行接线代码和错误检查。


TIA.

我想你对继承和绑定的看法是正确的,但并不完全一致

您是否可以通过添加以下内容来折衷:

[outlet]
new UIWebView WebView
{
    get { return base.WebView; }
    set { base.WebView = value;}
}
到每个ScreenController类

不完全干燥,但比在所有类中复制所有内容要好。

看起来像这样的错误: @Stuart:

对。我最后去了一个和你说的很相似的地方。我决定让每个父类(ScreenController、ScreenController)绑定到同一个视图,并实现一个由基定义的抽象属性:

   protected abstract UIWebView ActiveWebView { get; }
该基类在其构造函数中设置xib文件。ScreenController,ScreenController,…,实现该属性,它实际上只是对该插座的引用。它尽我所能地干燥。这和你说的差不多

    /// <summary>
    /// Provides access to the base class to handle most error handling.
    /// </summary>
    protected override UIWebView ActiveWebView { get { return this.WebView; } }
//
///提供对基类的访问以处理大多数错误处理。
/// 
受保护的覆盖UIWebView ActiveWebView{get{返回this.WebView;}}
@胡奇,我会仔细看看那只虫子。我现在可以解决这个问题

谢谢

    /// <summary>
    /// Provides access to the base class to handle most error handling.
    /// </summary>
    protected override UIWebView ActiveWebView { get { return this.WebView; } }