2011-12-19 20 views
6

Estoy teniendo dificultades con este problema. Mi MainWindow.xib, tiene un NavigationController, la vista para la cual se hereda de otra xib.MonoTouch.Dialog: elemento posterior en la barra de navegación

Ahora, presiono DialogViewController desde la vista principal, pero no puedo ver el botón Atrás en la barra de navegación de la segunda vista.

¿Hay algo específico que deba establecer para el DialogViewController cuando se lo empuja desde un UIViewController?

Gracias y Saludos Abhishek

Respuesta

14

El constructor de DialogViewController tiene un parámetro llamado empuje que se debe configurar el verdadero:

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

BTW, todo lo que hace el parámetro "verdadero" es establecer NavigationItem.HidesBackButton en falso. Lo hace en el método ViewWillAppear, por lo que si anulas ese método, puedes volver a mostrar el botón Atrás. Eso es útil si está presionando el DialogViewController a través de un guión gráfico. –

2

Sin ver su código, no estoy seguro exactamente lo que va mal aquí. Sin embargo, por lo que sé de UINavigationController, la pila del controlador de vista comienza vacía. Cuando presiona el primer controlador de vista, le da al controlador de navegación una vista para mostrar, pero no tiene nada a lo que 'volver', por lo que no muestra un botón de retroceso. Si empuja una segunda vista, puede obtener un botón Atrás.

Además, asegúrese de que la propiedad Title esté configurada en sus controladores de vista secundaria si desea que el botón Atrás refleje la vista a la que volverá.

-1

También puede aplicar por sí mismo

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

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

Esto crea un botón en el lado derecho de la barra de navegación. No es el botón de flecha hacia atrás a la izquierda. – Rodja

0

Tengo un controlador de la barra de pestañas que luego fuera de las manos a un controlador de navegación (en un guión gráfico con flyoutnavcontollers también). Uno de los controladores de vista de aquí se inicia en un dialogviewcontroller para cosas de MT.D.

Quería un precioso botón de retroceso con punta/cónica desde el cuadro de diálogo de monotouch hasta mi punto de llamada en el controlador de navegación.

Pero iniciar en MT.D pierde la navegación incluso cuando estoy usando el controlador de navegación actual por algún motivo, es decir, el botón no se muestra y no hay forma de volver. Las pantallas posteriores de mt.d dan un botón de retroceso.

Al parecer, su supuesta a pasar un verdadero booleano en la llamada para activar el botón y deslice en la pila existente pero esto no funcionó para mí volver:

this.NavigationController.PushViewController (dv, true); 

por encima de obra ni de solución de Dan para mí. Pero abrir el dialogviewcontroller actual mientras está en la pantalla raíz MT.D ayuda a volver a mi posición anterior en el controlador de navegación original en el guión gráfico (o controlador flyoutnav).

No estoy seguro de si este truco es el correcto pero funciona.

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

       NavigationController.PopViewControllerAnimated(true); 
      }); 

* actualización

me manejadas para obtener un botón de retroceso mediante la adición de la dialogviewcontroller a viewcontrollers actual subvista:

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

la correspondiente MyDvcController principalmente loooks como este:

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

      } 
     }; 
    } 
} 

esto permitió que monotouch.dialog forme parte de la pila actual de controladores de navegación y logre el botón de retroceso automático con la apariencia cónica ..ayy

Cuestiones relacionadas