2011-12-19 11 views
6

Sto avendo difficoltà con questo problema. Il mio MainWindow.xib, ha un NavigationController, la vista per la quale è ereditata da un altro xib..MonoTouch.Dialog: elemento posteriore in NavigationBar

Ora, spingo un DialogViewController dalla vista principale, ma non riesco a vedere un pulsante indietro sulla barra di navigazione della seconda vista.

C'è qualcosa di specifico che ho bisogno di impostare per il DialogViewController quando viene spinto da un UIViewController.

Grazie e saluti Abhishek

risposta

14

Il costruttore per DialogViewController ha un parametro chiamato spingendo che è necessario impostare a true:

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

BTW, tutto il parametro "true" è impostato su NavigationItem.HidesBackButton su false. Lo fa nel metodo ViewWillAppear, quindi se si sostituisce quel metodo è possibile visualizzare nuovamente il pulsante Indietro. È utile se stai spingendo il DialogViewController tramite uno storyboard. –

2

Senza vedere il codice, non sono sicuro di quello che sta andando male qui. Tuttavia, da quello che so di UINavigationController, lo stack del controller di visualizzazione inizia a vuoto. Quando si preme il primo controller della vista, questo fornisce al controller di navigazione una vista da visualizzare, ma non ha nulla a cui tornare indietro, quindi non visualizza un pulsante indietro. Se si preme una seconda vista, è possibile ottenere un pulsante indietro.

Inoltre, assicurarsi che la proprietà Title sia impostata sui controller di visualizzazione figlio se si desidera che il pulsante Indietro rifletta la vista a cui si tornerà.

-1

È possibile anche implementare da soli

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

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

Questo crea un pulsante sul lato destro della barra di navigazione. Non il pulsante indietro con freccia a sinistra. – Rodja

0

Ho un controller barra delle schede che poi giù le mani a un controller di navigazione (anche in uno storyboard con flyoutnavcontollers). Uno dei viewcontrollers da qui si avvia in un dialogviewcontroller per roba MT.D.

Volevo un pulsante con punta aguzza/affusolato dalla finestra di dialogo Monotouch indietro al mio punto di chiamata nel controller di navigazione.

Ma l'avvio in MT.D perde la navigazione anche quando im utilizzando il controller di navigazione corrente per qualche motivo, ovvero il pulsante non viene visualizzato e non c'è modo di tornare indietro. Le successive schermate mt.d forniscono un pulsante indietro.

A quanto pare il tuo dovrebbe passare un vero booleano nella chiamata per abilitare il tasto mentre spingendo sulla pila esistente, ma questo non ha funzionato di nuovo per me:

this.NavigationController.PushViewController (dv, true); 

sopra il lavoro non ha ancora la soluzione di Dan per me. Ma facendo scattare l'attuale dialogviewcontroller mentre si trova nella schermata principale di MT.D, è possibile tornare alla posizione precedente nel controller di navigazione originale nello storyboard (o nel controller flyoutnav).

Non sono sicuro se questo hack è il modo corretto ma funziona.

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

       NavigationController.PopViewControllerAnimated(true); 
      }); 

* aggiornamento

ho consumassimo ottenere un pulsante indietro aggiungendo il dialogviewcontroller di viewcontrollers corrente visualizzazione secondaria:

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

corrispondente MyDvcController principalmente loooks come questo:

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), 

      } 
     }; 
    } 
} 

questo ha permesso al monotouch.dialog di essere parte della navigazione corrente controllori stack e ottenere pulsante indietro automatico con l'aspetto conico ..yay

Problemi correlati