действие от UITableViewCellAccessoryCheckmark - PullRequest
0 голосов
/ 03 августа 2011

Я создал простой табличный вид с 5 строками.и использовал UITableViewCellAccessoryCheckmark для ячеек.

Я хочу нажать кнопку и выполнить действие, основанное на том, какие ячейки «отмечены», а какие нет.Пользователь может выбрать none, all, 1 и т. Д.

Как проверить, используют ли UITableViewCellAccessoryCheckmark / какие ячейки и какие используют UITableViewCellAccessoryNone?

Спасибо

Сэм

РЕДАКТИРОВАТЬ!

Я нашел способ сделать это ...

В didSelectRowAtIndexPath я сделал следующее ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic may go here. Create and push another view controller.

    NSUserDefaults *loginDefaults = [NSUserDefaults standardUserDefaults];

    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark) 
    {   
        oldCell.accessoryType = UITableViewCellAccessoryNone;   

    } else {

        UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];     

        if (newCell.accessoryType == UITableViewCellAccessoryNone) 
        {   
            newCell.accessoryType = UITableViewCellAccessoryCheckmark;  
        }  
    }

    if ([oldCell.textLabel.text isEqualToString:@"All"]) {

        if (oldCell.accessoryType == UITableViewCellAccessoryCheckmark) {

            [loginDefaults setObject:@"YES" forKey:@"DownloadAll"];

        } else if (oldCell.accessoryType == UITableViewCellAccessoryNone) {

            [loginDefaults setObject:@"NO" forKey:@"DownloadAll"];
        }

    } else if

Немного по домам, но так как в моем табличном представлении есть только 5 вещей, это хорошо работает для того, что я хочу, чтобы оно делало.

Теперь в действии я проверяю значения в NSUserDefaultsи работать соответственно

1 Ответ

0 голосов
/ 03 августа 2011

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

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

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

См. Также вопрос Вопрос 3240830 , он очень похож.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...