ios swift uibarbuttonitem

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();