2016-05-18 4 views
0

Я сталкиваюсь с некоторыми проблемами с Swift.Swift - доступ UITableViewCell от другого UITableViewCell

У меня есть UITableView с ячейками прототипа. Есть 3 ячейки Первые два содержат текстовое поле, которое пользователь заполняет. Третий содержит кнопку отправки.

Очень просто!

Моя проблема заключается в том, что кнопка «Отправить» должна быть включена, только если оба текстового поля содержат текст.

Это было бы легко, если бы страница не была построена с представлением таблицы, но она построена так, и требование теперь меняется, и это приводит к моей проблеме. Это страница вопросов безопасности/ответа, так как первые две ячейки совпадают с точки зрения макета, подход TableView имеет смысл.

Моя проблема в том, что я не знаю, как получить доступ к кнопке Третьей ячейки во время других действий с ячейками.

В принципе у меня есть делегат на TextDidChange в ячейке Textfield, но я не могу получить доступ к кнопке в последней ячейке, чтобы включить ее.

У меня может быть прототип или делегат, который будет распространять значение или действие на ParentViewController, но это не помогает мне, поскольку мне нужно иметь доступ к кнопке в третьей ячейке.

Какой лучший подход здесь?

Благодарим за помощь!

+1

Пожалуйста, внесите свой код. Являются ли эти единственные 3 ячейки, которые когда-либо будут в tableView? – rMickeyD

ответ

1

Ну Есть много способов сделать это, я дам вам пример одного:

Идея: В основном вам нужна ваша модель для поддержания состояния клеток (В этом случае текстовых полей/расположение кнопок), а затем каждый раз, когда обновляется текстовый фильтр, вы можете проверить, является ли он пустым, и обновить модель ячейки кнопки, чтобы отразить это (вы можете вызвать reloadRowsAtIndexPaths, каждый раз, когда текстовые поля обновляются, в том случае, если я предполагаю, что последняя ячейка), в примере, чтобы проверить, какая ячейка была отредактирована, я использую свойство тега. Это будет работать с любой длиной Вопросов).

Здесь я включил базу кнопок на свойстве модели. Но вы также можете получить кнопку ячейки с помощью (но вы также должны обновить модель, потому что, если происходит обновление на взгляд, вы потеряете контроль над включить/отключить действие, когда повторное использование клеток):

if let cellButton = self.tblSample.cellForRowAtIndexPath(NSIndexPath(forRow: sampleData.count - 1, inSection: 0)) as? ButtonCellClass{ 

} 

Пример: https://github.com/Abreu0101/TableViewButtonDisable

+0

Отлично !!! Я действительно начинал делать это !!! Он отлично работает :) Большое вам спасибо :) – julien

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