2012-10-25 78 views
2

在我的屏幕之一中,我需要將UIView(帶有一些標籤和按鈕)添加到DialogViewController。原因是我沒有使用TableView頭,因爲我不希望這個視圖在滾動表格時滾動。Monotouch:如何將UIView添加到DialogViewController

我可以實現這一點,如果我添加我的自定義視圖導航欄,但然後我的看法將不會收到任何接觸(導航控制器吃他們)。

我也試過將自定義視圖添加到DialogsViewController父控制器,並且它的工作原理,調整LoadView()中tableview框架的大小不會做任何事情。

是否有任何其他方式向DialogViewController添加自定義視圖?

謝謝。

回答

5

要添加不滾動的標題,您可以創建一個控制器,該控制器的視圖既包含您要添加的其他視圖,也包含DialogViewController的視圖。例如,下面的簡單的示例將一個UILabel與DialogViewController的視圖作爲一個附加控制器的子視圖(在這種情況下稱爲容器)沿着:

[Register ("AppDelegate")] 
    public partial class AppDelegate : UIApplicationDelegate 
    { 
     UIWindow window; 
     MyDialogViewController dvc; 
     UIViewController container; 
     float labelHeight = 30; 

     public override bool FinishedLaunching (UIApplication app, NSDictionary options) 
     { 
      window = new UIWindow (UIScreen.MainScreen.Bounds); 

      container = new UIViewController(); 

      container.View.AddSubview (new UILabel (new RectangleF (0, 0, UIScreen.MainScreen.Bounds.Width, labelHeight)){ 
       Text = "my label", BackgroundColor = UIColor.Green}); 

      dvc = new MyDialogViewController (labelHeight); 

      container.View.AddSubview (dvc.TableView); 

      window.RootViewController = container; 

      window.MakeKeyAndVisible(); 

      return true; 
     } 

    } 

然後DialogViewController調整的TableView的高度在viewDidLoad方法:

public partial class MyDialogViewController : DialogViewController 
    { 
     float labelHeight; 

     public MyDialogViewController (float labelHeight) : base (UITableViewStyle.Grouped, null) 
     { 
      this.labelHeight = labelHeight; 

      Root = new RootElement ("MyDialogViewController") { 
       new Section(){ 
        new StringElement ("one"), 
        new StringElement ("two"), 
        new StringElement ("three") 
       } 
      }; 
     } 

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

      TableView.Frame = new RectangleF (TableView.Frame.Left, TableView.Frame.Top + labelHeight, TableView.Frame.Width, TableView.Frame.Height - labelHeight); 
     } 
    } 

這裏的顯示結果在模擬器截圖: enter image description here

+0

很好的例子麥克:) – dalexsoto