我正在创建一个日历应用,我正在UITableView
中显示日历中的事件。
当表为空时,我使用tableFooterView
隐藏UITableView
中的分隔线。我使用以下代码执行此操作:
self.tableView.tableFooterView = [[UIView alloc] init];
UILabel *footerTableViewLabel = [[UILabel alloc] init];
footerTableViewLabel.text = @"No items.";
[self.tableView.tableFooterView addSubview:footerTableViewLabel];
如果表格中有元素,我会隐藏此视图,如果没有,我会显示它。如果日历最初为空,这可以正常工作。但是,如果我在我的应用程序仍在后台运行时从Calendar.app中删除了一个事件,那么当我回到应用程序时,我看到的只是一堆空单元格和分隔符,没有标签说"否项"
有什么想法吗?
编辑:我使用以下方式显示/隐藏页脚视图:
self.tableView.tableFooterView.hidden = NO/YES;
就考虑事件而言,我不提供直接从我的应用程序中删除它们的可能性,我只是检测它们何时从Calendar.app中删除。不幸的是,我无法显示执行此检测的代码,因为它是私有库的一部分,但是,这样可以正常工作,即在删除事件时跳转到正确的代码部分。
答案 0 :(得分:0)
您可以在代码中尝试隐藏分隔符:self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
答案 1 :(得分:0)
使用self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
隐藏分隔线。如果您希望活动的tableview单元格具有分隔符,则可以使用如下函数手动将边框添加到每个单元格的底部:
- (void)addBottomBorderWithColor:(UIColor *)color andHeight:(CGFloat) borderHeight
{
CALayer *borderBottom = [CALayer layer];
borderBottom.backgroundColor = color.CGColor;
borderBottom.frame = CGRectMake(0, self.frame.size.height, self.frame.size.width, borderHeight);
[self.layer addSublayer:borderBottom];
}
**编辑** 如果要添加一个指示“无数据”的视图,请尝试将其添加为tableview下面的视图,然后在没有数据时将tableview设置为hidden。
希望这有帮助
答案 2 :(得分:0)
所以,我终于设法解决了这个问题。有问题:
出于某种原因(可能是[self.tableView reloadData]
),self.tableView.tableFooterView
会变为零,这就是我看到空单元格的原因。将视图重新分配给它修复了此问题。
我必须更新页脚视图及其包含的标签的视图约束。