2011-12-19 8 views
6

Mam problem z tym problemem. Moje MainWindow.xib, ma NavigationController, widok, który jest dziedziczony od innego xib.MonoTouch.Dialog: Back item in NavigationBar

Teraz wypycham DialogViewController z widoku głównego, ale nie widzę przycisku Wstecz na pasku nawigacji drugiego widoku.

Czy jest coś konkretnego, co muszę ustawić dla DialogViewController, gdy jest on wypychany z UIViewController.

Dzięki i Pozdrawiam Abhishek

Odpowiedz

14

Konstruktor DialogViewController ma parametr o nazwie popychanie, które należy ustawić na true:

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

BTW, wszystkie "prawda" parametr jest ustawiony na NavigationItem.HidesBackButton na false. Robi to w metodzie ViewWillAppear, więc jeśli zastąpisz tę metodę, możesz wrócić do przycisku wstecz. Jest to przydatne, jeśli przesuwasz kontrolkę DialogViewController za pomocą storyboardu. –

2

Bez zobaczenia kodu, nie jestem pewien dokładnie, co się dzieje źle tutaj. Jednak z tego, co wiem o UINavigationController, stos kontrolerów widoku zaczyna być pusty. Kiedy naciskasz pierwszy kontroler widoku, daje on kontrolerowi nawigacyjnemu widok do wyświetlenia, ale nie ma do czego wracać, więc nie wyświetla przycisku wstecz. Jeśli wciśniesz drugi widok, możesz uzyskać przycisk Wstecz.

Upewnij się również, że dla kontrolerów widoku podrzędnego jest ustawiona właściwość Title, jeśli chcesz, aby przycisk Wstecz odzwierciedlał widok, do którego będziesz wracać.

-1

można również realizować przez siebie

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

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

Spowoduje to utworzenie przycisku po prawej stronie paska nawigacyjnego. Nie przycisk ze strzałkami po lewej stronie. – Rodja

0

Mam kontroler pasek kart, które następnie Ręce precz do kontrolera nawigacji (w scenorysie również z flyoutnavcontollers). Jeden z kontrolerów viewcontroller z tego miejsca uruchamia kontrolkę windowviewontroler dla plików MT.D.

Potrzebowałem uroczego spiczastego/zwężonego przycisku wstecz z okna dialogowego monotouch z powrotem do mojego punktu wywołania w kontrolerze nawigacyjnym.

Ale uruchomienie w MT.D traci nawigację, nawet gdy używam bieżącego kontrolera nawigacji z jakiegoś powodu, tj. Przycisk nie jest wyświetlany i nie ma możliwości powrotu. Kolejne ekrany mt.d dają przycisk powrotu.

Widocznie twój powinien przekazać prawdziwą wartość logiczną na wezwanie, aby włączyć przycisk jednocześnie naciska na istniejący stos, ale to nie działał z powrotem do mnie:

this.NavigationController.PushViewController (dv, true); 

prace nad rozwiązaniem Dan zrobił dla mnie. Ale pojawienie się bieżącego okna dialogowego windowview podczas pracy na głównym ekranie MT.D pomaga wrócić do mojej poprzedniej pozycji w oryginalnym kontrolerze nawigacyjnym w scenorysie (lub sterowniku flyoutnav).

Nie jestem pewien, czy ten hack jest poprawny, ale działa.

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

       NavigationController.PopViewControllerAnimated(true); 
      }); 

* aktualizacja

I manged dostać z powrotem przycisk dodając dialogviewcontroller do aktualnej viewcontrollers podrzędny:

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

odpowiedni MyDvcController głównie loooks tak:

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 zezwolił monotouch.dialog na stanie się częścią obecnego stosu kontrolerów nawigacyjnych i uzyskał automatyczny przycisk powrotu o stożkowatym wyglądzie .. tak