【问题标题】:placeholder text in dynamic prototype UITableView动态原型 UITableView 中的占位符文本
【发布时间】:2013-02-24 07:15:06
【问题描述】:

基本上,我有一个 UITableView,可以用来保存警报。

屏幕底部有一个“+”按钮可以添加警报,但当然,在添加任何警报之前,表格是空白的。

如果没有警报,并且表格视图为空,我希望有某种占位符文本,例如“按 + 添加警报”。

我尝试过this,还发现了一个关于使用显示上述文本的单元格制作占位符 UITableView 的建议。然后根据是否有任何警报显示/隐藏占位符 UITableView 或警报 UITableView。我无法让它工作,并认为想要显示一个简单的字符串有点过分。

如果没有警报,我还尝试创建一个占位符 UITableViewCell,但它与 numberOfRowsInSection 混淆,这反过来又破坏了删除单元格的能力,它也应该这样做(因为 numberOfRowsInSection 永远不能为零)。

更新:我还尝试将 UILabel 添加到 tableView 的 tableHeaderView(和 tableFooterView)。没有运气。

有什么想法吗?

【问题讨论】:

  • 我打算在早上让它旋转一下,让大脑休息一下,但我认为发布这个问题可能会有所帮助..
  • 只需将UILabel 作为子视图添加到您的UItableView。或者,如果您想要更多外观,可以添加自定义 UIView
  • 只是做一个[self.view addSubview:myLabel]?底层的 UITableView 呢?此外,控制器是一个 TableView 控制器。我想知道这是否说明了它的观点..
  • 我的意思是将子视图添加到您的 tableview 本身...不在视图上...
  • 嗯。我已经尝试过了,但没有运气。也许this 是原因 - 查看第一个答案。

标签: uitableview


【解决方案1】:

在对该站点进行了一些研究之后,我通过实现以下委托回调来解决它:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    if (self.alarmList.count == 0) {
        UILabel *label = [[UILabel alloc] init];
        label.text = @"press the + to add an alarm";
        label.textAlignment = UITextAlignmentCenter;
        label.numberOfLines = 2;
        label.font = [UIFont boldSystemFontOfSize:16];
        label.backgroundColor = [UIColor darkTextColor];
        label.textColor = [UIColor whiteColor];
        return label;
    } else {
        return nil;
    }
}

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    if (self.alarmList.count == 0) {
        return 68;
    } else {
        return 0;
    }
}

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 2015-02-27
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2014-06-16
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多