2

最新のMonotouch 5.2.4を使用しています。私の開発の一環として、Popoverコントローラのバックグラウンドボーダーを変更しようとしています。 Appleのドキュメントに従って、これは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); 
    } 
} 

以下のようなクラスを作成している、私は私のビューコントローラを持っているポップアップオブジェクトと、このビューを関連付けるしようとしています。それは、(「の定義が含まれていません..」)の割り当てがhappingさ

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

上記のコードの最後の行は、コンパイルエラーがスローされ、以下のように定義されます。

これはどういう意味ですか?これはMonotouchでサポートされていません(Objective-Cでサポートされているようですが、多くの例がオンラインです)。または私は何かが足りない。

あなたのお手伝いをお待ちしております。

答えて

3

グッドキャッチ! MonoTouchからpopoverBackgroundViewClass(iOS5の新機能)のバインディングが欠けているようです。

私はそれを実行します。 http://bugzilla.xamarin.comにバグレポートを記入したい場合、これが完了すると通知されます(この質問へのリンクが付いたクイックバグレポートで十分です)。私はまたあなたに修正プログラムまたは回避策を与えることができるはずです。 MonoTouchでは

UPDATE

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が密接に監視されており、非常に同じ製品チームによって対応されていることを嬉しく思っています。がんばり続ける.. –

関連する問題