剖面标题视图故障在普通的uitableview中

时间:2016-01-09 12:50:22

标签: ios uitableview ios9 sectionheader tablefooterview

我有一个UITableView类型的普通表视图,其中包含两个部分和一个动态行数。 我还为节标题返回UIView

除非桌子重新加载,否则一切都很完美。节标题位置移动到随机位置,直到视图开始滚动。

标题视图和超级视图中的Autolayout似乎没有违反。 我已将表格页脚视图设置为nil或显示分页动画。 表视图位于滚动视图中。

为节标题出现此故障的任何建议或解决方案。 而这个故障只发生在iOS 9中

2 个答案:

答案 0 :(得分:4)

我的问题独立于刷新控制,尽管它是我的视图控制器的一部分。 它与estimatedRowHeightrowHeight相关。

我找到了一个经验解决方案。我的问题发生在视图控制器和重新加载的tableview之间来回。

因为我的细胞高度可变,所以我有:

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0f;

所以我可以处理细胞自动调整大小。 显然问题出在estimatedRowHeight上。当我用最大单元行高度更改值时,毛刺消失了。桌子部分不再跳跃了。我使用视图检查器根据我最糟糕的用例来计算行高。

注意#1

我不知道它如何与千细胞一起表现。应该使用estimatedRowHeight来计算整个内容偏移量,以便考虑最坏的情况 低效的。

注意#2

在计算最大单元格高度时,请记住考虑系统首选项可以增加字体大小的情况,如果单元格已注册到这些更改。

答案 1 :(得分:1)

我的问题解决如下。

最初我添加了刷新控制器作为表视图的子视图。

_chatListRefreshControl = [[UIRefreshControl alloc] init];
_chatListRefreshControl.transform = CGAffineTransformMakeScale(0.7, 0.7);
[_chatListRefreshControl addTarget:self
                            action:@selector(refreshChatListView:)
                  forControlEvents:UIControlEventValueChanged];
[self.myChatsTableView addSubview:_chatListRefreshControl];

我已将其修改为如下:将刷新指示器从表视图更改为表视图控制器的属性。

UITableViewController *chatTableViewcontroller = [[UITableViewController alloc] init];
    chatTableViewcontroller.tableView = self.myChatsTableView;
    _chatListRefreshControl = [[UIRefreshControl alloc] init];
    _chatListRefreshControl.transform = CGAffineTransformMakeScale(REFRESH_INDICATOR_SCALE_FACTOR, REFRESH_INDICATOR_SCALE_FACTOR);
    [_chatListRefreshControl addTarget:self action:@selector(refreshChatListView:) forControlEvents:UIControlEventValueChanged];
    chatTableViewcontroller.refreshControl = _chatListRefreshControl;
    [self addChildViewController:chatTableViewcontroller];