【发布时间】:2010-03-16 19:59:53
【问题描述】:
我有一个 UITableView,它的数据有部分。我在 tableView 顶部显示一个覆盖视图,在搜索时它会变暗:
- (UIView *)blackOverlay {
if (!blackOverlay) {
blackOverlay = [[UIView alloc] initWithFrame:[self overlayFrame]];
blackOverlay.alpha = 0.75;
blackOverlay.backgroundColor = UIColor.blackColor;
[tableView insertSubview:blackOverlay aboveSubview:self.parentViewController.view];
}
return blackOverlay;
}
只要 tableView 不包含部分,它就可以完美地工作。当 tableView 确实包含部分并且 tableView 更新时(例如当视图在从导航控制器堆栈中弹出视图后重新出现时),部分标题将呈现在 blackOverlay 之上。除了节标题之外,这会使 tableView 变暗。我尝试从viewWillAppear: 中调用[tableView bringSubviewToFront:self.blackOverlay],但我得到了相同的行为。
我当前的解决方法是在覆盖层存在时为 tableView 部分标题返回 nil,但这会在部分标题之前所在的重叠 tableView 中留下空白间隙。
如何确保 tableView 部分标题永远不会绘制在 blackOverlay 之上?或者,是否可以在不是 tableView 子视图的 UITableViewController 子类中在 tableView 前面创建一个视图?
【问题讨论】:
标签: iphone uiview uitableview