UITableView неправильно выбирается - PullRequest
4 голосов
/ 12 февраля 2012

Я работаю над приложением для iPhone, где у меня есть UITableView, который заполняется потоком XML через URL.

Скажем, например, три ячейки заполнены.

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

У меня никогда не было такого раньше, и я в замешательстве.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                              reuseIdentifier:@"UITableViewCell"];
    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    LocationsItem *atm = [[locations atms] objectAtIndex:[indexPath row]];
    [[cell textLabel] setText:[atm atmName]];

    float distance = [[atm atmDistance] floatValue];
    NSString *distanceString = [NSString stringWithFormat:@"%0.2f miles from current location", distance];
    [[cell detailTextLabel] setText:distanceString];

    return cell;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    LocationsItem *atm = [[locations atms] objectAtIndex:[indexPath row]];

    ATMDetailsController *detailsController = [[ATMDetailsController alloc] init];

    [detailsController setCurrentATM: atm];

    [[self navigationController] pushViewController:detailsController animated:YES];

}

Спасибо, Ник

1 Ответ

9 голосов
/ 11 октября 2013

Вы ответили на свой вопрос. Проблема в том, что вы использовали tableView:deselectRowAtIndexPath: вместо tableView:didSelectRowAtIndexPath:

Примечательно, что это из-за прискорбного факта, что deselect предшествует did в словаре, и, следовательно, обычно потрясающее завершение кода xcode намекает вам!

Теперь вернемся к часам отладки!

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