2013-06-14 2 views
0

Я был на этом один в течение нескольких дней и не могу ничего сработать (есть похожие вопросы о SO, но никто из них не совсем прав/сделал трюк).Обновление подкласса UITableViewCell

Итак, у меня есть UITableView, чьи ячейки являются подклассами (которые на самом деле являются UITableViews с подстроенным UITableViewCells). По сути, таблица аналогична таблице в этом уроке: www.raywenderlich.com/4680/how-to-make-an-interface-with- horizontal-tables-like-the-pulse-news-app-part-1

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

Пример для уточнения (S = выбранного, и = невыбранного)

Скажет, таблица в настоящее время как этот

| U | S | S | U |

Теперь я хочу, чтобы все ячейки были отброшены (поэтому они должны отображаться как «U», поэтому я перезаписываю массив singleton'd. Очевидно, что таблица по-прежнему такая же. Теперь, скажем, я выбираю окончательный клетка, это то, что я получаю (что правильно):

| U | U | U | S |

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

| U | U | U | U |

Извините, если это неясно ; Я буду разбираться во всем, что могло вызвать путаницу. Спасибо!

ответ

0

См here. В принципе, после обновления состояния вашего массива вам необходимо выполнить итерацию по видимым ячейкам и перенастроить или перезагрузить их, используя один из методов, описанных в ссылке.

+0

спасибо, отмечен как ответ, потому что он меня в правильном направлении. он работает при первом запуске, но по какой-то причине подклассы ячеек возвращаются к их последнему состоянию на втором (я регистрирую массив, и он определенно сброшен) ... любые идеи? – Ryan

+0

Я не совсем уверен, что понимаю ваш сценарий, поэтому было бы полезно, если бы вы могли опубликовать соответствующий код. Если бы я должен был догадаться, я бы сказал, что вы не настраиваете свои ячейки в «cellForRowAtIndexPath», и поэтому строки, выходящие за пределы экрана и обратно, получают переработанные ячейки, которые находятся в неправильном состоянии. –

0

Используйте selectedBackgroundView свойство UITableViewCell на cellForRowAtIndexPath:

UIImageView *selBGView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourHighlightedImage.png"]]; 
cell.selectedBackgroundView = selBGView; 
+0

Мне нравится, где находится ваша голова, но это не поможет. «Состояние» определяется моим массивом, и, хотя ваше предложение предлагает другой способ сделать это * (я рассмотрю вопрос об интеграции с массивом, поскольку он может быть более чистым). Независимо от того, что * не будет * работать, потому что cellForRowAtIndexPath не вызывается в файле подкласса-реализации ... Если бы я мог вызвать cellForRowAtIndexPath (reloadData) из моего обычного класса, он бы сработал. Для пояснения я хочу, чтобы все ячейки возвращались в исходное состояние, когда в суперклассе вызывается метод, не связанный с таблицей. – Ryan