UITableView на прокрутке не вызывает didSelectRowAtIndexPath - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть UITableView с одним разделом.Если я нажимаю на ячейку, didSelectRowAtIndexPath срабатывает, как и ожидалось.но если в табличном представлении больше строк, чем это может быть показано на одном экране, и если я прокручиваю табличное представление по вертикали и щелкаю по строке, didSelectRowAtIndexPath не вызывается.Это срабатывает, только если я нажимаю на ту же строку еще раз.Это как таблицы должны функционировать при прокрутке?Если нет, то я что-то упускаю?спасибо за любую помощь.

Ответы [ 2 ]

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

Спасибо Тим за ваш вклад. Хотя добавление условия if не помогло. прокрутка была отключена в nib-файле, что позволило устранить проблему. Еще раз спасибо !!

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

Проблема заключается в том, что ваш cellForRowAtIndexPath неправильно использует dequeue.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SingleCellIdentifier = @"selectioncell";
    UITableViewCell *selectionCell = [tableView dequeueReusableCellWithIdentifier:SingleCellIdentifier];
    if(selectionCell == nil)    
        selectionCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SingleCellIdentifier] autorelease];  
        [selectionCell setSelectionStyle:UITableViewCellSelectionStyleBlue];
        [selectionCell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
    }   
    [[selectionCell textLabel] setText:[[possibleAnswers objectAtIndex:indexPath.row] answerText]]; 

}

Идея в том, что dequeueReusableCellWithIdentifier: дает вам пригодную для использования ячейку, но если ни одна не доступна, она возвращает ноль; если это ноль, вы должны выделить его самостоятельно. Ваш код извлекал ячейку из очереди, но затем игнорировал ее и просто назначал ее независимо от статуса очереди. Попробуйте это и посмотрите, решит ли это вашу проблему.

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