2012-02-07 1 views
2

私は、UIPopoverController内でMonoTouch.Dialogを使用して、iPadユーザーに一連の設定を提供します。私のアプリでは、このCalendarView(http://escoz.com/blog/monotouch-calendar-control-is-here/)を使用しているので、ユーザーはアプリケーションの日付を設定できます(設定は、タイムゾーンの設定に使用されます)。 Googleマップ)。UIPopoverController MonoTouch.Dialogを使用すると、ポップオーバーの不要なサイズ変更が発生する

とにかく、私はUIPopoverControllerに関するいくつかのサイジングの問題を経験しています...コンテンツのサイズを設定する方法に関係なく、.Dialogのツリーを深くクリックすると、UIPopoverController自体がサイズ変更され、ビュー。

添付のサンプルは、私が見ているもののサンプルです。あなたは450x420のサイズのコンテンツを持っていることに気づくでしょう。いずれかのオプションをクリックすると、ポップオーバーのサイズが変更されます。私はこのpopoverが常に同じサイズのままでいてほしいです。

私はここで何かが分かりませんか?どんな助けでも大歓迎です。

は宣言しmyPopOverView.csからポップオーバーを起動します:

UIPopoverController myPopOver = new UIPopoverController(new myPopOverView()); 

btnSearch.TouchUpInside += (sender, e) => { 
    myPopOver.PopoverContentSize = new SizeF(450f, 420f); 
    myPopOver.PresentFromRect (btnPopOver.Frame, this.View, UIPopoverArrowDirection.Down, true); 
} 

myPopOverView.csから:

public override void ViewDidLoad() 
    { 
    base.ViewDidLoad(); 

    var root = CreateRoot(); 

    var dv = new DialogViewController (root, true); 
    this.PushViewController (dv, true); 
} 

RootElement CreateRoot() 
    { 

     return new RootElement ("Find Stuff") { 
       new Section(){ 
        new RootElement ("States", new RadioGroup (0)){ 
         new Section(){ 
          new RadioElement ("New York"), 
          new RadioElement ("California"), 
          new RadioElement ("Texas"), 
         } 
        } , 
       } , 
       new Section(){ 
        new RootElement ("Places", new RadioGroup (0)){ 
         new Section(){ 
          new RadioElement ("New York City"), 
          new RadioElement ("San Francisco"), 
          new RadioElement ("Dallas"), 
         } 
        } , 
       } , 
       new Section(){ 
        new RootElement ("Products") { 
          from sh in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
           select new Section (sh + " - Section") { 
            from filler in "12345" 
            select (Element) new CheckboxElement (sh + " - " + filler, true, "kb") 
          } 

        } , 
       } 

     } ;   
    } 

答えて

1

TopViewControllerはUIPopoverControllerが、それはContentSizeの自動交渉しようと変更するたびに。

WillShowViewControllerメソッドをオーバーライドし、そこにSizeFを設定することで、表示される各UIViewControllerに対してContentSizeForViewInPopoverを設定する必要があります。

+0

ありがとうございました、アヌー、正しい方向へのプッシュ。私はWillShowViewControllerのオーバーライドを持つ私のUINavigationControllerのデリゲートをセットアップしました...チャンピオンのように働いた! (私はビューコントローラのスイッチを使用してビューコントローラあたりの高さを設定することもできます)ありがとう!! –

+0

素晴らしい、嬉しい助けた。実際には、デリゲートメソッドのオーバーライドの代わりに.NETのイベントの候補としてよく似ています。もしそれが望ましい振る舞いを達成したら、答えとしてマークしてください.-) – Anuj

関連する問題