Добавление аксессуара в UITableView - PullRequest
0 голосов
/ 21 февраля 2012

У меня некоторое время отображается UITableView на экране. В каждой ячейке есть песня и имя исполнителя. На заднем плане каждая песня и имя исполнителя ищутся онлайн (с помощью API Spotify). Он находит URL для воспроизведения одной песни, а затем переходит к следующей! :) Звучит просто ... но я хочу, чтобы каждая песня была найдена, чтобы в этом ряду появился флажок.

В настоящее время у меня есть следующий код, чтобы сделать это ...

[[table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:currentConnectionNumber inSection:0]] setAccessoryType:UITableViewCellAccessoryCheckmark];
[table setNeedsDisplay];

Но все, что происходит, это когда все песни были найдены, ТОГДА появляются галочки ... Почему это так и как я могу сделать так, чтобы галочки появлялись по одному?

спасибо

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Вам нужно установить галочку в tableView:cellForRowAtIndexPath:

- (void)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *reuseIdentifier = @"cell";
    UITableViewCell *cell = nil;

    cell = [tableView dequeueReusableCellForIdentifier:reuseIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier] autorelease];
    }

    NSString *cellTitle = [self cellTitleForRowAtIndexPath:indexPath]; // You need to implement this method
    BOOL hasURL = [self hasURLForRowAtIndexPath:indexPath]; // You need to implement this method

    cell.textLabel.text = cellTitle;

    if (hasURL)
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    else
        cell.accessoryType = UITableViewCellAccessoryNone;

    return cell;
}

Затем перезагрузить ячейки, когда ваш запрос завершится

- (void)myRequestFinished:(SomeKindOfWebRequest *)webRequest {

    NSIndexPath *indexPathToReload = [self indexPathForWebRequest:webRequest]; // You need to implement this method
    NSArray *indexPaths = [NSArray arrayWithObject:indexPathToReload];

    [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimtation:UITableViewRowAnimationNone];
}
0 голосов
/ 21 февраля 2012

Вы перезагружаете свой tableView, используя

[yourtableView reloadData]

когда ваши данные изменяются.

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

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

cellForRowAtIndexPath:

и, если этот флагtrue добавьте дополнительную галочку, в противном случае - нет.

  if (isValid) {

        cell.accessoryType = UITableViewCellAccessoryCheckmark;

    }
    else{

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