UITableViewCell内的UITableView在滚动外部tableview时获取隐藏

时间:2014-02-20 09:29:27

标签: ios objective-c uitableview

我正在开发一个应用,用户可以在其中向联系人列表中的特定联系人添加事件。因此,如果用户滚动联系人列表,则每个联系人都将显示其中的事件列表。我的问题是当我向下滚动外表视图时,事件显示正常,但是当向上滚动时它会隐藏一些事件(即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;

}

请帮我解决这个问题。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

将垂直滚动视图放在另一个垂直滚动视图中通常是导致问题的原因。当用户向上或向下拖动时,用户经常会对哪个视图应该滚动感到困惑。

在这种情况下,它听起来像单元格内的数据高于单元格本身,导致它需要滚动才能显示它。

您应该使单元格足够高以显示其所有数据,而不是尝试滚动单元格内的数据。 heightForRowAtIndexpath方法将为您提供更改每个单元格高度的机会。

看起来这也是基于较旧的Apple示例代码。实例化单元格的UINib方法优于使用“loadNibNamed”来重置具有新单元格的IBOutlet。使用故事板比这两种方法都更现代。