Как переключить editButtonItem с помощью rxswift?

У меня следующая установка

override func viewDidLoad() {

    super.viewDidLoad()

    navigationItem.leftBarButtonItem = editButtonItem

    navigationItem.leftBarButtonItem?.rx.tap.subscribe(onNext: { [weak self] _ in

        print("edit tapped")

        if let isEditing = self?.tableView.isEditing {

            self?.tableView.setEditing(!isEditing, animated: true)

        }

        }).disposed(by: disposeBag)
}

Проблема в том, что кнопка левой панели не переключается при нажатии. I.E текст на кнопке левой панели должен измениться с Изменить на Готово.

Изменение заголовка кнопки в методе onNext тоже не работает.


person 0rt    schedule 10.08.2017    source источник
comment
Я бы порекомендовал не подписываться на событие касания на editButton, потому что это удалит его поведение переключения редактирования / выполнения по умолчанию. Я считаю, что нашел лучшую альтернативу, позвонив: rx.methodInvoked (#selector (UIViewController.setEditing (_: animated :))). Также, если вы используете UITableViewController, вызов seEditing на контроллере вместо TableView вполне приемлем.   -  person nmdias    schedule 05.11.2017


Ответы (1)


Вы должны вызывать setEditing в self, а не в табличном представлении. Если self равно UITableViewController, это также изменит состояние редактирования представления таблицы.

person rmaddy    schedule 10.08.2017