2017-02-02 4 views
0

Я рассмотрел другой вопрос, задающий тот же вопрос, что и у меня, но ответ сказал им назвать функцию setEditing (который я пробовал и сказал позже в вопросе). Но я не вижу, как вы могли бы вызвать эту функцию только при нажатии кнопки редактирования. Я полагаю, что я мог бы создать свой собственный BarButtonItem и запустить этот метод, когда будет нажата кнопка элемента панели, но я решил, что это будет намного проще, поскольку мне нужны основные функции кнопки редактирования.Кнопка редактирования не имеет функциональности, в левой части ячеек нет красного круга с минусом

У меня есть UIViewController, у которого есть таблица с именем peersTable. Когда я нажимаю кнопку редактирования, она переключается на выполнение, но ничего не происходит на столе. Я также добавил свой собственный UITableViewRowActions, и когда я провёл влево на ячейках, мои пользовательские действия действительно появляются.

Вот некоторые из моего кода:

class PeerViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, ConnectionManagerDelegate { 

@IBOutlet weak var peersTable: UITableView! 
... 

override func viewDidLoad() { 
    ... 
    peersTable.delegate = self 
    peersTable.dataSource = self 

    self.navigationItem.rightBarButtonItem = self.editButtonItem 
    ... 
} 

Я также пытался называть peersTable.setEditing (правда, анимированные: правда) метод сам, и в этом случае красный минус действительно появляется. Я никогда не видел эту проблему раньше, поэтому я не понимаю, почему это происходит. Я каким-то образом неправильно настроил делегата? Или, возможно, я делаю что-то неправильно, потому что это обычный просмотр, а не TableView (хотя я сделал это раньше в предыдущем проекте).

Заранее благодарен! Если вам нужна дополнительная информация, дайте мне знать!

+0

Я также столкнулся с той же проблемой. Я подключил представление таблицы к классу, создав свойство tableView в классе, таком как выход. @IBOutlet слабый var productTableView: UITableView! , ТаблицаView в раскадровке и свойство tableView должны быть подключены. Хотя я не знаю, почему это сработало. – mumu

+0

@RubaiyatJahanMumu Я предполагаю, что вы имеете в виду ctrl + перетаскивание tableView в класс PeerViewController, который я уже делал ранее "@IBOutlet weak var peersTable: UITableView!" (а затем установить в качестве делегата и источника данных). Если вы не имели в виду что-то еще ... – Logan

+0

Были ли реализованы другие методы делегатов, особенно 'func tableView (_: editingStyleForRowAt:)'? Если это так, вам нужно вернуть '.delete' здесь. –

ответ

1

Поскольку это не TableViewController, он не будет автоматически устанавливать режим tableView в режим редактирования при нажатии кнопки редактирования.

Вам необходимо переопределить метод setEditing, чтобы вы могли настроить режим tableView в режиме редактирования.

Добавьте это к классу ViewController:

override func setEditing(_ editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 
    peersTable.setEditing(editing, animated: animated) 
} 
+0

Спасибо, что исправил это! – Logan

Смежные вопросы