2015-03-19 5 views
-1

Я использовал статический UITableView, но таблица слишком длинная и переполняет память.Изменение другой ячейки в динамическом прототипе UITableView при переключении в одном изменении ячейки

Я включил динамический прототип UITableView с 1 типом ячейки, в котором есть UISwitch.

Одна из ячеек при включении выключателя отключит переключатель другой ячейки. Эти ячейки имеют фиксированный индекс.

IBAction метод в моем UITableViewCell подкласса, и я не хочу, чтобы добавить UITableView как свойство в моем UITableViewCell. Как достичь вышеуказанного эффекта?

Я планирую использовать id или аналогично, чтобы различать ячейки, поскольку переключатель каждой ячейки имеет разные эффекты, что не решает вышеуказанное требование.

Спасибо,

+0

- ячейка, которая должна быть изменена, или это может быть любая случайная ячейка? –

ответ

0

Я хотел бы добавить свойство блока в камеру, которые вы можете использовать, чтобы уведомить контроллер изменений в коммутаторе. Смотрите мой ответ ниже на вопрос об этом:

How can I get index path of cell on switch change event in section based table view

Вся ваша логика может теперь быть реализована в контроллере представления.

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

+0

Ответ на ссылку - это то, что мне нужно. Относительно вашего комментария о модели. Как модель уведомляет представление о перезагрузке? Я не хочу, чтобы модель имела представление о представлении – Motoko

+0

Извините, возможно, плохая формулировка. Модель данных предназначена только для сохранения текущего состояния всего. Контроллер и ячейки вашего представления - это виды и элементы управления на этих данных. Таким образом, вы используете блоки, запускаемые кнопками и т. Д., Чтобы уведомить контроллер вида, который обновляет модель данных. В том же коде вы перезагружаете таблицу, а не код модели данных. Таким образом, логика блокируется контроллером представления для ячеек, ячейки выполняют блоки по активности, код в блоках обновляет модель данных и при необходимости перезагружает таблицу. Поскольку все ячейки отражают модель данных, все автоматически обновляется при перезагрузке. –

+0

ха-ха, хорошо, да, это то, что я тоже сделал – Motoko

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