我正在动态地将内容加载到UITableView中。如果有数据,表需要显示数据。如果没有数据,表格应显示普通页面。但在我的应用程序中,该表显示带有两个分隔线的普通页面。我需要删除此分隔线并显示纯白页。请建议?
任何帮助将不胜感激!
答案 0 :(得分:26)
如果您提供页脚视图,则空行之间的分隔符将消失。
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
myTableView.tableFooterView = view;
答案 1 :(得分:2)
如果数据源为空,则可以检查空案例在tableview顶部添加占位符视图。如果它们不为空,请删除占位符视图。
答案 2 :(得分:2)
普通UITableView
将始终显示分隔线,即使它是空的。您可能会注意到,如果您的列表只有一行或两行,则仍然可以看到分隔线。这是默认行为,除非您有非常正当理由,否则不应覆盖此行为。
我猜你只看到两个分隔线,因为你的行很高?
如果您真的需要删除分隔线,请将表格视图上的separatorStyle
属性设置为UITableViewCellSeparatorStyleNone
。请注意,这会影响所有行。因此,如果您仍然想要存在的行的分隔符,则必须在自己的UITableViewCell
对象中绘制这些分隔线。
答案 3 :(得分:1)
使用@bbarnhart解决方案可以将其简化为单行:
myTableView.tableFooterView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
答案 4 :(得分:0)
两个步骤:
在viewDidLoad
中添加此代码- (void)viewDidLoad
{
emptyplaceholder = [[UILabel alloc] initWithFrame:CGRectMake(80, 100, 640, 100)];
emptyplaceholder.text = NSLocalizedString(@"No shift changes...", "no shift changes");
emptyplaceholder.alpha = 0.2;
[self.view addSubview:emptyplaceholder];
}
在controllerDidChangeContent:
中添加此代码- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// The fetch controller has sent all current change notifications, so tell the table view to process all updates.
if (self.fetchedResultsController.fetchedObjects.count > 0)
emptyplaceholder.hidden = YES;
else
emptyplaceholder.hidden = NO;
[self.tableView endUpdates];
}
所以当有日期单元格时,UILable会消失,当删除表格中没有数据时,标签会再次显示。
答案 5 :(得分:0)
当没有数据“没有数据可用”时,将新的UIView添加到UIViewController的好UI设计,通过添加它将隐藏UITableView的分隔线