Estoy tratando de agregar un botón de actualización a la barra superior de un controlador de navegación sin éxito.
Aquí está el encabezado:
@interface PropertyViewController : UINavigationController {
}
Así es como estoy tratando de agregarlo:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain
target:self action:@selector(refreshPropertyList:)];
self.navigationItem.rightBarButtonItem = anotherButton;
}
return self;
}
iphone
ios
uinavigationcontroller
uinavigationbar
Artilheiro
fuente
fuente
self.topViewController.navigationItem.leftBarButtonItem = nextButton;
Intente agregar el botón al elemento de navegación del controlador de vista que se va a insertar en esta
PropertyViewController
clase que ha creado.Es decir:
Ahora, este infoButton que se ha creado programáticamente aparecerá en la barra de navegación. La idea es que el controlador de navegación recoja su información de visualización (título, botones, etc.) de la
UIViewController
que está a punto de mostrar. En realidad, no agrega botones y tal directamente alUINavigationController
.fuente
Parece que algunas personas (como yo) pueden venir aquí buscando cómo agregar un botón de barra de navegación en el Creador de interfaces. La respuesta a continuación muestra cómo hacerlo.
Agregue un controlador de navegación a su guión gráfico
Seleccione su controlador de vista y luego en el menú Xcode elija Editor> Incrustar en> Controlador de navegación .
Alternativamente, puede agregar uno
UINavigationBar
desde la Biblioteca de objetos.Agregar un elemento de botón de barra
Arrastre a
UIBarButtonItem
desde la Biblioteca de objetos a la barra de navegación superior.Debe tener un aspecto como este:
Establecer los atributos
Puede hacer doble clic en "Elemento" para cambiar el texto a algo como "Actualizar", pero hay un icono real para Actualizar que puede usar. Simplemente seleccione los atributos para el inspector
UIBarButtonItem
y de artículo Sistema elija Actualizar .Eso le dará el icono de actualización predeterminado.
Agregar una acción de IB
Controle el arrastre desde
UIBarButtonItem
al Controlador de vista para agregar un@IBAction
.Eso es.
fuente
Hay un botón de sistema predeterminado para "Actualizar":
fuente
Puedes usar esto:
C objetivo
Rápido
fuente
fuente
Para Swift 2:
fuente
Aquí está la solución en Swift (configure las opciones según sea necesario):
fuente
¿Por qué son subclases
UINavigationController
? No hay necesidad de subclasificarlo si todo lo que necesita hacer es agregarle un botón.Configure una jerarquía con un
UINavigationController
en la parte superior, y luego en elviewDidLoad:
método del controlador de vista raíz : configure el botón y adjúntelo al elemento de navegación llamandofuente
Puedes probar
fuente
Swift 4:
fuente
fuente
Intenta esto, funciona para mí.
Barra de navegación y también imagen de fondo agregada al botón derecho.
fuente
fuente
fuente
fuente
Debes agregar tu barButtonItem en el
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
método.fuente
Simplemente copie y pegue este código Objective-C.
fuente
Este problema puede ocurrir si eliminamos el controlador de vista o intentamos agregar un nuevo controlador de vista dentro del generador de interfaces (main.storyboard). Para solucionar este problema, se requiere agregar "Elemento de navegación" dentro del nuevo controlador de vista. A veces sucede que creamos una nueva pantalla de controlador de vista y no se conecta al "Elemento de navegación" automáticamente.
fuente
También puedes agregar varios botones usando
rightBarButtonItems
fuente
@Artilheiro: Si es un proyecto basado en la navegación, puede crear BaseViewController. Todas las demás vistas heredarán esta BaseView. En BaseView, puede definir métodos genéricos para agregar el botón derecho o cambiar el texto del botón izquierdo.
ex:
Y ahora, en cualquier vista personalizada, implemente esta vista base, llame a los métodos:
En algún método, llame al método base como:
fuente