Состояние кнопки панели навигации xcode - PullRequest
0 голосов
/ 15 марта 2019

У меня есть кнопка редактирования - UIBarButtonItem

enter image description here

, которая исчезает с экрана при нажатии

enter image description here

и появляется при нажатии кнопки отмены

enter image description here

Как видно, состояние кнопки редактирования остается выбраннымпосле появления.Как программно изменить состояние кнопок панели навигации на нормальное состояние?Или предложите мне лучший способ.

вот мой код проекта

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, introductionDelegate {

var navBarEditButton: UIBarButtonItem?
var navBarDeleteButton: UIBarButtonItem?
var navBarCancelButton: UIBarButtonItem?

override func viewDidLoad() {
    super.viewDidLoad()
    self.navBarEditButton = UIBarButtonItem(title: "Edit", style: .plain, target: self, action: #selector(editObjectsAction))
    self.navBarDeleteButton = UIBarButtonItem(title: "Delete", style: .plain, target: self, action: #selector(deleteObjectsAction))
    self.navBarCancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelAction))

    self.navigationItem.leftBarButtonItems = [navBarEditButton!]
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@objc private func editObjectsAction(_ sender: UIBarButtonItem) {
    self.navigationItem.leftBarButtonItems = [navBarCancelButton!, navBarDeleteButton!]
}

@objc private func cancelAction(_ sender: UIBarButtonItem) {
    self.navigationItem.leftBarButtonItems = [navBarEditButton!]
}

@objc private func deleteObjectsAction(_ sender: UIBarButtonItem) {

}

Ответы [ 2 ]

1 голос
/ 15 марта 2019

вы можете создать UIBarButtonItem с помощью UIButton и обработать состояние этой кнопки.При этом вы изменяете стиль UIBarButtonItem, но просто проверяете, получаете ли вы ожидаемый результат.

let myButton = UIButton(frame: CGRect(x: 10, y: 300, width: 100, height: 40)) // handle state on this button
self.navBarEditButton = UIBarButtonItem(customView: myButton)
0 голосов
/ 15 марта 2019

Я добавил новую функцию

func refreshNavBarButton (navBarButton: inout UIBarButtonItem) {
    navBarButton = UIBarButtonItem(title: navBarButton.title, style: navBarButton.style, target: navBarButton.target, action: navBarButton.action)
}

И я вызываю ее каждый раз, когда на панели навигации отображается

    refreshNavBarButton(navBarButton: &navBarEditButton!)
    self.navigationItem.leftBarButtonItems = [navBarEditButton!]
...