12

Disculpe que soy nuevo en la programación de iphone.Ítem de navegación que no aparece en View Controller

He creado una aplicación Iphone de detalles maestros (por lo que el controlador de navegación vino con el proyecto). Paso a un nuevo controlador de vista que creé a través de UIBarButtonItem en masterviewcontroller. Sin embargo, a diferencia del controlador de vista detallada (que vino con el proyecto), parece que no puedo mostrar el elemento de navegación (¿o la barra de navegación?) En la vista aunque aparece en la lista de escenas de mi guión gráfico.

Heres algo de código y una captura de pantalla:

En mi viewDidLoad masterviewcontroller.m función

UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:normal target:self action:@selector(goToSettings:)]; 
self.navigationItem.leftBarButtonItem = settingsButton; 

() en mi masterviewcontroller.m

- (IBAction)goToSettings:(id)sender{  
    [self performSegueWithIdentifier:@"SettingsSegue" sender:self]; 
} 

He intentado añadir un título a la navigationitem durante la función viewDidLoad de la nueva clase viewcontroller.m que he creado (mencionado en este Link pero no funcionó)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.navigationItem.title = @"Settings"; 
    self.navigationItem.leftBarButtonItem = self.editButtonItem; 
} 

Pero todavía aparece en mi guión gráfico (que aparece en la lista en la escena, pero no en la pantalla de la vista)

Así que mi pregunta es ¿por qué es ahora apareciendo y cómo ¿Lo consigo? Quiero un botón de retroceso como mi controlador de vista detallada que vino con el proyecto de detalles maestros.

editar # 1

he añadido un cheque por si mando de navegación es nula y no es nula (si la declaración no se ingresa) También intenté cambiar el elemento de navegación hacia atrás y de la eliminación y ninguno ha funcionado .

if(self.navigationItem == nil) 
{ 
    [ self.navigationItem init]; 
} 
self.navigationItem.title = @"Settings"; 
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 

Ahora que tengo la reputación suficiente para mostrar una imagen que puedo demostrar que el elemento de navegación aparece en la lista pero tampoco aparece en la vista

enter image description here

+0

La sentencia if aquí no es nunca ingresado, porque los documentos dicen que self.navigationItem se crea sobre la marcha. –

Respuesta

12

El elemento de navegación no se presentó debido a la "estilo" de mi segue.

La secuencia que movió la escena desde el controlador de vista maestra al controlador de vista de configuraciones se configuró en 'modal'. Tiene que configurarse para 'empujar'.Esto se hace desde el guión gráfico de las utilidades panel

1

Usted ha verificado que su El controlador de navegación enumerado en el método viewDidLoad no es nulo?

Asumiendo que usted tiene una correcta self.navigationItem que no es nula, parece que va a configurar correctamente su self.navigationItem.leftBarButtonItem a un editButtonItem, en lugar de tratar retirar esta todos juntos!

Si la eliminación no resuelve el problema de tratar:

self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem; 
6

usted tiene que cambiar su estilo de Segue al hacer esto:

  • Seleccione el Segue en su Storyboard;
  • Vaya al inspector de Atributos (en las pestañas del panel derecho);
  • Cambia el atributo de Estilo a Push.

Hará que la pantalla ruede de derecha a izquierda y la barra de navegación aparecerá deslizándose. Con Modal, la pantalla viene desde la parte inferior a la parte superior de la pantalla y no deja que aparezca la barra de navegación.

0

Compruebe si su controlador de vista es el controlador de vista raíz del controlador de navegación. No puede presentar directamente un controlador de vista como un controlador de vista modal. Debe hacer que su controlador de vista sea el controlador de vista raíz de un controlador de navegación y luego presentar su controlador de navegación como el controlador de vista modal.

// Create the root view controller for the navigation controller 
// The new view controller configures a Cancel and Done button for the 
// navigation bar. 
YourViewController *addController = [[YourViewController alloc] 
        init]; 

// Configure the YourViewController. 

// Create the navigation controller and present it. 
UINavigationController *navigationController = [[UINavigationController alloc] 
         initWithRootViewController:addController]; 
[self presentViewController:navigationController animated:YES completion: nil]; 
4

El problema en mi caso fue que el controlador de navegación no era el "controlador de vista inicial"

así que tuve que hacer esto

enter image description here

Cuestiones relacionadas