ios - Show/Hide barButtonItem
swift uibarbuttonitem (4)
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de mostrar / ocultar un UIBarButtonItem
. barButton
un barButton
de barButton
al lado derecho en el storyboard
. Luego, en viewDidLoad
, hice el rightBarButtonItem
a nil
. Más tarde, lo puse en el button
que agregué en el storyboard
. Aquí está mi código:
// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem!
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Cuando configuro self.deleteBarButton
en el rightBarButtonItem
, no sucede nada. No lo muestra. ¿Qué estoy haciendo mal, y cuál es la forma correcta / más eficiente de mostrar / ocultar un objeto barButtonItem
?
Actualizar
Intenté lo siguiente:
self.deleteBarButton.hidden = true
Pero me sale el siguiente error:
UIBarButtonItem
no tiene un miembro llamado ''oculto''
¡Este funciona perfecto para mí!
self.navBar.title = ""
self.navBar.enabled = false
Acabo de recibir la respuesta! Todo lo que tienes que hacer es crear un strong IBOutlet
, luego puedes hacer lo siguiente:
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Intente crear su barButton manualmente en viewDidLoad y luego muestre / oculte su botón.
Código:
var barButton: UIBarButtonItem!
func viewDidLoad() {
super.viewDidLoad()
barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
self.navigationItem.rightBarButtonItem = barButton
}
func someFunction() {
self.navigationItem.rightBarButtonItem = nil
// or
self.navigationItem.rightBarButtonItem = barButton
}
Actualización 2
Usted podría simplemente configurar el texto del botón a nada:
self.deleteBarButton.title = "";
Actualización 1
Utilizaría la propiedad enabled
para iluminar el botón de la siguiente manera (aunque no lo hace completamente invisible, le permite al usuario saber que no realizará ninguna acción).
Esto puede actuar como una variable para hacerle saber que el botón está oculto en su caso:
Iluminado: (lugar en ViewDidLoad)
self.deleteBarButton.enabled = true;
Oscurecido: (lugar más adelante)
self.deleteBarButton.enabled = false;
Luego agregaría lo siguiente para que desaparezca por completo:
self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();