2011-12-19 32 views
6

我很難解決這個問題。 我的MainWindow.xib,有一個NavigationController,其視圖從另一個xib繼承。MonoTouch.Dialog:導航欄中的返回項

現在,我從主視圖中按DialogViewController,但在第二個視圖的導航欄中看不到後退按鈕。

有什麼具體的,我需要設置爲DialogViewController當它被從UIViewController推。

感謝和問候 阿布舍克

回答

14

實施DialogViewController的構造函數有一個名爲推的參數,你應該設置爲true:

new DialogViewController(rootElement, true); // true will show the back button 
+4

順便說一句,所有「真」參數確實將NavigationItem.HidesBackButton設置爲false。它在ViewWillAppear方法中做到了這一點,因此如果您覆蓋該方法,則可以讓後退按鈕再次顯示。如果您通過故事板推送DialogViewController,這很有用。 –

2

沒有看到你的代碼,我不知道到底發生了什麼錯在這裏。但是,根據我所知的UINavigationController,視圖控制器堆棧開始爲空。當您按下第一個視圖控制器時,它會給導航控制器一個顯示視圖,但它沒有任何可返回的內容,因此它不顯示後退按鈕。如果你推第二個視圖,你可能會得到一個後退按鈕。

另外,如果您希望後退按鈕反映您將要返回的視圖,請確保在子視圖控制器上設置了Title屬性。

-1

您也可以自己

dialogViewController.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
      { 

       NavigationController.DismissModalViewControllerAnimated(true); 
      }); 
+0

這會在導航欄的右側創建一個按鈕。不是左側帶箭頭的後退按鈕。 – Rodja

0

我有一個標籤欄控制器,然後把手拿開導航控制器(在flyoutnavcontollers故事板也)。其中一個來自這裏的視圖控制器啓動到MT.D stuffview的dialogviewcontroller中。

我想要一個可愛的指尖/錐形後退按鈕,從單擊對話框回到導航控制器中的呼叫點。

但是,即使在使用當前導航控制器出於某種原因(即沒有顯示該按鈕並且無法返回)時,啓動到MT.D中也會丟失導航。隨後的mt.d屏幕會顯示一個後退按鈕。

顯然你應該真正的布爾傳入呼叫,能後退按鈕,同時推到現有的堆棧,但這沒有工作對我來說:

this.NavigationController.PushViewController (dv, true); 

丹的上面,我的解決方案沒有工作。但在根MT.D屏幕時彈出當前的dialogviewcontroller有助於恢復到我在原始導航控制器中的故事板(或flyoutnav控制器)中的位置。

不知道這個黑客是否是正確的方式,但它的工作原理。

dv.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
      { 

       NavigationController.PopViewControllerAnimated(true); 
      }); 

*更新

我manged通過將dialogviewcontroller目前viewcontrollers子視圖得到一個返回按鈕:

dvc = new MyDvcController(this.NavigationController); 
this.View.AddSubview(dvc.TableView); 

相應MyDvcController主要loooks這樣的:

public partial class MyDvcController : DialogViewController 
{ 
    public MyDvcController (UINavigationController nav): base (UITableViewStyle.Grouped, null) 
    { 

     navigation = nav; 
     Root = new RootElement ("Demos"){ 
      new Section ("Element API"){ 
       new StringElement ("iPhone Settings Sample", DemoElementApi), 

      } 
     }; 
    } 
} 

this允許monotouch.dialog成爲當前導航控制器堆棧的一部分,並實現錐形外觀的自動後退按鈕..yay