我有一个带有一个部分的UITableView。如果单击一个单元格,则会按预期触发didSelectRowAtIndexPath。但如果tableview的行数多于单个屏幕中显示的行数,并且如果我垂直滚动tableview并单击某行,则不会调用didSelectRowAtIndexPath。仅当我再次单击同一行时才会触发它。这是滚动时tableviews应该如何运作的方式吗?如果没有,有什么我想念的吗? 谢谢你的帮助。
答案 0 :(得分:0)
问题是你的cellForRowAtIndexPath正在使用出列错误。
(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:
给你一个可用的单元格,但如果没有,它返回nil;如果它是零,你应该自己分配。您的代码正在获取出列的单元格,但随后忽略它并简单地分配,而不管出列状态如何。试试这个,看看它是否解决了你的问题。
答案 1 :(得分:0)
感谢蒂姆的投入。添加if条件并没有帮助。在nib文件中禁用了滚动,启用它修复了问题。再次感谢!!