UITableView ... правильный путь - PullRequest
       44

UITableView ... правильный путь

0 голосов
/ 25 февраля 2012

Я пытаюсь создать UITableView, как родное приложение календаря:

enter image description here

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

По какой-то причине cell.isSelected всегда НЕТ, и у меня нет возможности перезагрузить просмотр таблицы после того, как в любом случае будет выбрана другая ячейка.

Должен ли я создать подкласс UITableViewCell для чего-то такого простого и хранить массив ячеек?

Любая помощь будет оценена, спасибо.

1 Ответ

0 голосов
/ 25 февраля 2012

Нет необходимости создавать подклассы, как указано в приложении doc функция делегирования:

tableView:willSelectRowAtIndexPath:

должен сделать трюк

EDIT:

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

-(void)willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (prevIndexPath != nil) {
        UITableViewCell* prevCell = [self.tableView cellForRowAtIndexPath: prevIndexPath];
        prevCell.textLabel.textColor = [UIColor black]; // your initial color here
    }

    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath: indexPath];
    cell.textLabel.textColor = [UIColor green];

    prevIndexPath = indexPath;
}

Убедитесь, что для протокола UITableViewDelegate установлен управляющий класс, который управляет вашим TableView, и установите для него tableViews.delegate.

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

...