我正在开发一个应用,用户可以在其中向联系人列表中的特定联系人添加事件。因此,如果用户滚动联系人列表,则每个联系人都将显示其中的事件列表。我的问题是当我向下滚动外表视图时,事件显示正常,但是当向上滚动时它会隐藏一些事件(即UITableViewCells
)。再次,如果我开始向下滚动它的工作正常并再次向上滚动事件正在隐藏。例如,如果一个联系人中有三个事件,它只显示前两个,最后一个隐藏。检查数据源方法是否正常(即,CellForRowAtIndexPath
被调用4次)。
我的内部tableView的CellForRowAtIndexPath
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"EventViewCell";
EventsCellAtViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// load a new cell from the nib file
[[NSBundle mainBundle] loadNibNamed:@"EventsCellAtViewCell" owner:self options:nil];
cell = self.eventsAtCell;
self.eventsAtCell = nil;
}
cell.selectionStyle = UITableViewCellSeparatorStyleNone;
cell.event = [_eventsFeed eventAtIndex:indexPath.row];
return cell;
}
请帮我解决这个问题。在此先感谢!!
答案 0 :(得分:1)
将垂直滚动视图放在另一个垂直滚动视图中通常是导致问题的原因。当用户向上或向下拖动时,用户经常会对哪个视图应该滚动感到困惑。
在这种情况下,它听起来像单元格内的数据高于单元格本身,导致它需要滚动才能显示它。
您应该使单元格足够高以显示其所有数据,而不是尝试滚动单元格内的数据。 heightForRowAtIndexpath方法将为您提供更改每个单元格高度的机会。
看起来这也是基于较旧的Apple示例代码。实例化单元格的UINib方法优于使用“loadNibNamed”来重置具有新单元格的IBOutlet。使用故事板比这两种方法都更现代。