如何在UITableView中显示零行的表

时间:2009-09-29 07:13:33

标签: objective-c iphone uitableview

我正在动态地将内容加载到UITableView中。如果有数据,表需要显示数据。如果没有数据,表格应显示普通页面。但在我的应用程序中,该表显示带有两个分隔线的普通页面。我需要删除此分隔线并显示纯白页。请建议?

任何帮助将不胜感激!

6 个答案:

答案 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的分隔线