2012-01-24 55 views
1

我有一個自定義按鈕,它從UIButton繼承。我正在處理TouchUpInside事件,並希望在當前視圖的頂部顯示視圖。像Windows開發中的對話框一樣有這樣的事情嗎?或者我應該以另一種方式做到這一點?從自定義控件中顯示新視圖

[MonoTouch.Foundation.Register("HRPicker")] 
public class HRPicker : UIButton 
{ 
    public HRPicker() : base() 
    { 
     SetUp(); 
    } 

    public HRPicker(NSCoder coder) : base(coder) 
    { 
     SetUp(); 
    } 

    public HRPicker(NSObjectFlag t) : base(t) 
    { 
     SetUp(); 
    } 

    public HRPicker(IntPtr handle) : base(handle) 
    { 
     SetUp(); 
    } 

    public HRPicker(RectangleF frame) : base(frame) 
    { 
     SetUp(); 
    } 

    public void SetUp() 
    { 
     TouchUpInside += HandleTouchUpInside; 
    } 

    void HandleTouchUpInside (object sender, EventArgs e) 
    { 
     //I want to display a View here on top of the current one. 
    } 
} 

感謝,

回答

2

是的,你有幾個選擇:

  • ModalViewController - 從任何UIViewController中調用,並在前臺覆蓋一個視圖控制器。
  • UIPopoverController - 是土生土長的控件,需要一個UIViewController並有演示和解僱
  • WEPopoverController掛鉤 - 是重新實施UIPopoverController,並允許您自定義佈局,大小和酥料餅的容器的顏色。

ModalViewController:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

UIPopoverController:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html

WEPopoverController:https://github.com/mono/monotouch-bindings/tree/master/WEPopover

更新:不管你使用哪種方法,你必須調用從該酥料餅/莫代爾觀點的呈現主線程

using(var pool = new NSAutoReleasePool()) { 
    pool.BeginInvokeOnMainThread(()=>{ 

     // Run your awesome code on the 
     // main thread here, dawg. 

    }); 
} 
+0

UIPopoverController是我需要的! –

0

可可對話框相對應的是UIAlertView中:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAlertView_Class/UIAlertView/UIAlertView.html

退房這個問題,瞭解如何使用它的一個例子:Showing an alert with Cocoa

的代碼應該是相當容易翻譯成C#和MonoTouch。但這裏是一個簡單的例子:http://monotouchexamples.com/#19

+0

那麼,這是一個警報對話框。我說的是將另一個視圖顯示爲對話框,而不是警報 –