2

我正在使用最新的Monotouch 5.2.4。作爲我的開發的一部分,我試圖改變Popover控制器的背景邊界。按照蘋果文檔,這可以使用從UIPopoverBackgroundView類繼承的自定義類進行管理。UIPopoverController的PopoverBackroundViewClass屬性丟失

所以我建立了一個這樣的類,如下

public class MyPopoverBackground : UIPopoverBackgroundView 
{ 
    public MyPopoverBackground() 
    { 
     UIImageView imgBackground = new UIImageView(); 
     UIImage img = UIImage.FromFile(@"SupportData/Popbg.png"); 
     img.StretchableImage(18,10); 
     imgBackground.Image = img; 
     this.AddSubview(imgBackground); 
    } 
} 

創建這個類之後,我想這個觀點與彈出對象我在我的視圖控制器關聯。它的定義如下

UIPopoverController popup = new UIPopoverController(searchPage); 
popup.popOverBackroundViewClass = new MyPopoverBackground(); //This line throws compilation error 

上面代碼的最後一行,其中分配happing拋出編譯錯誤(「不包含定義..」)。

這是什麼意思?這在Monotouch中是不被支持的(似乎在Objective-C中被支持,因爲我在網上看到很多例子)?或者我錯過了一些東西。

感謝您的幫助。

回答

3

好抓!它看起來像是一個綁定,目前從MonoTouch中缺少popoverBackgroundViewClass(iOS5中的新增功能)。

我會考慮實施它。如果你想填寫一個錯誤報告http://bugzilla.xamarin.com,你會收到通知一旦完成(只是一個快速的錯誤報告與這個問題的鏈接就夠了)。我也應該能夠給你一個修補程序或解決方法。

UPDATE

在MonoTouch的5.3+(一旦釋放),你就可以這樣做:

popoverController.PopoverBackgroundViewType = typeof (MyPopoverBackgroundView); 

請注意,你不能創建自己的實例,因爲它需要從做本地方(因此爲什麼你只告訴UIPopoverController要創建哪種類型)。

您還需要遵循UIPopoverBackgroundView的所有要求,這意味着要導出所需的選擇器(因爲它需要static方法,所以它比簡單繼承要複雜一點)。例如。

class MyPopoverBackgroundView : UIPopoverBackgroundView { 

     public MyPopoverBackgroundView (IntPtr handle) : base (handle) 
     { 
      ArrowOffset = 5f; 
      ArrowDirection = UIPopoverArrowDirection.Up; 
     } 

     public override float ArrowOffset { get; set; } 

     public override UIPopoverArrowDirection ArrowDirection { get; set; } 

     [Export ("arrowHeight")] 
     static new float GetArrowHeight() 
     { 
      return 10f; 
     } 

     [Export ("arrowBase")] 
     static new float GetArrowBase() 
     { 
      return 10f; 
     } 

     [Export ("contentViewInsets")] 
     static new UIEdgeInsets GetContentViewInsets() 
     { 
      return UIEdgeInsets.Zero; 
     } 
    } 
+0

感謝您的及時回覆。正如你所提到的,我填補了一個錯誤。我很高興看到SO被同一個產品團隊密切關注和迴應。保持.. – 2012-02-17 05:45:48