Проверьте все элементы в iPhone UITableView - PullRequest
0 голосов
/ 13 июля 2010

У меня есть UITableView, где каждая ячейка либо получает / теряет флажок, либо переходит в другое представление таблицы при нажатии. Для каждой таблицы я хочу добавить кнопку проверки всех, которая помечает каждую ячейку в этой таблице и все ее элементы. Как мне разрешить одному UITableViewCell переключать флажки каждого в его TableView?

РЕДАКТИРОВАТЬ: удаляя последний индекс в пути индекса и заменяя его новым номером строки, я могу просмотреть всю таблицу и отметить ее, как показано ниже:

for(int i = 0; i < [tableView numberOfRowsInSection:0]; i++){
                UITableViewCell *newCell = [tableView cellForRowAtIndexPath:[[indexPath indexPathByRemovingLastIndex]
                                                                             indexPathByAddingIndex: i]];
                newCell.accessoryType = UITableViewCellAccessoryNone;
            }

Как ни странно, он пропускает каждую десятую ячейку или около того - и это даже не соответствует. В течение ряда лет иногда не отмечаются 2003 и 1993 годы, иногда 2003 и 1991 годы и т. Д. Это всегда около каждой десятой клетки или около того, но я не могу найти образец.

1 Ответ

1 голос
/ 13 июля 2010

Когда вы щелкаете по ячейке, будет вызван didSelectRowAtIndexPath. В этот момент все, что вам нужно сделать, это использовать метод tableView cellForRowAtIndexPath: indexPath, чтобы вернуть все ваши ячейки одну за другой и установить их тип аксессуара для галочки ... помогает

РЕДАКТИРОВАТЬ: Еще один способ сделать это, если у вас есть, может быть, какой-то массив (трудно сказать, что делать точно, не глядя на ваш код), но если у вас есть какой-то массив, который содержит значения, для которых нужны ячейки иметь галочки на них, тогда вы можете использовать в cellForRowAtIndexPath, чтобы назначить аксессуар галочки, поэтому, когда ваша ячейка выбрана, вы можете установить все значения в массиве на то, что вам нужно, и просто вызвать UITableViews reloadData ... hope это имеет смысл :), вот небольшой фрагмент кода, чтобы попытаться сделать его более понятным давайте предположим, что у вас есть 1 раздел и х количество строк

       NSMutableArray shouldHaveCheckmark; //this array will be of size x 
//(one for each row) and hold NSNUmbers 0 means not checked 1 means checked you initialize 
//this somewhere (viewDidLoad maybe) and should be declared in your .h file 
    //this is cellForRowAtIndex path
    -(UITableViewCell)cellForRowAtIndexPath:(NSIndexPath*)path
    {
        UITableViewCell *cell=...
        if([[shouldHaveCheckmark objectAtIndex:path.row] boolValue] )
           //assign checkmark accesory
    //other code 
     return cell;
    }

Таким образом, вы можете увидеть в didSelectRowAtIndexPath, что вы можете просто перевернуть числа в массиве и вызвать reloadData для tableView ... этот подход также будет работать

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