как загрузить выбор ячейки в родительский uitableview - PullRequest
0 голосов
/ 08 сентября 2011

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // do usual stuff here including getting the cell

    // determine the data from the IndexPath.row

    if (data == self.checkedData)
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // determine the selected data from the IndexPath.row

    if (data != self.checkedData) {
       self.checkedData = data;
    }

    [tableView reloadData];
}

myосновные проблемы связаны с data и self.checkedData Являются ли данные данными, возвращаемыми из массива значений, которые были проанализированы?а что такое проверенные данные?в основном я хочу, чтобы эти флажки были в конце ячейки при выборе.

1 Ответ

1 голос
/ 08 сентября 2011

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

Прежде всего, похоже, что вы можете проверять только одну ячейку за раз.

Data представляется текущей ячейкой, а checkedData - способом отслеживать, какая ячейка получит галочку.

Всякий раз, когда выделена ячейка, она помечается:

if (data != self.checkedData) {
   self.checkedData = data;
}

И контроллер просит TableView перерисовать (т.е. перезагрузить) себя снова:

[tableView reloadData];

Когдаэто действие запускается, делегат вызывает tableView:cellForRowAtIndexPath: (среди других методов), и если вы выберете ячейку, вы получаете галочку:

if (data == self.checkedData)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} 

В противном случае вы не будете:

else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...