iPhone:当 UITableView 没有单元格时添加背景按钮以查看
Posted
技术标签:
【中文标题】iPhone:当 UITableView 没有单元格时添加背景按钮以查看【英文标题】:iPhone: Add background button to view when UITableView has no cells 【发布时间】:2010-06-06 04:13:56 【问题描述】:我有一个 UITableViewController,当没有数据填充 UITableView 时,我想添加一个使用图像的按钮。因此,用户不会看到没有记录的 tableview,而是会看到一个图像,上面写着“没有添加记录,点击添加一个”,然后他们单击并创建一个新记录。
我以为我会隐藏 UITableView,然后创建按钮,但我从来没有看到按钮。我在这里使用:
if ([[fetchedResultsController sections] count] == 0)
self.tableView.hidden = YES;
// Create button w/ image
UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 100, 50);
[btn setImage:[UIImage imageNamed:@"no-rides.png"] forState:UIControlStateNormal];
[self.view addSubview:btn];
关于为什么我永远看不到按钮的想法?当我显示这个视图时,它似乎有一秒钟的透明背景,然后变成白色......
【问题讨论】:
【参考方案1】:我不确定它是否有效,但你可以试试这个:
如果您的视图控制器不是 UITableViewController 并且它包含 UITableView
[self.tableView removeFromSuperview];
然后[self.view addSubview];
如果您的视图控制器是 UITableViewController,您可能需要考虑将第一行设置为包含图像和文本。然后,您可以处理事件:tableView:didSelectRowAtIndexPath:
,如果用户单击第一个单元格,则触发处理按钮事件的方法
【讨论】:
好的,我尝试不隐藏我的 tableView,我看到我的图像正在单元格 0 内创建。这是否意味着我的视图控制器是 tableviewcontroller?不确定我是否要将其保留在该单元格中并对其进行自定义,因为我不希望该按钮可滚动。 你的类是继承自 UITableViewController 还是 UIViewController?如果来自 UITableViewController,那么它就是一个 UITableViewController 哦,原来是UITableViewController,所以不能隐藏。现在它尝试将第一个单元格设置为文本和图像的唯一方法。但是因为它是特定的第一个单元格,所以它不能滚动【参考方案2】:在 UITableViewController 中,self.view 可以是 self.tableView,在这种情况下隐藏表格也会隐藏按钮。尝试使用自定义 UIViewController 并将表格或按钮创建为 self.view 的子视图。
或者,当没有数据时,您可以创建一个包含您的按钮的自定义单元格并使用它来代替普通单元格。
【讨论】:
【参考方案3】:我相信您可以将按钮添加到表格页脚,因为即使没有单元格也会显示表格页脚。 (注意,这与节页脚不同。)
默认情况下,UITableView
的tableFooterView
属性为nil
。因此,只需创建您的按钮,然后执行:
self.tableView.tableFooterview = btn;
【讨论】:
【参考方案4】:对于所有未来的旅行者,我只需设置.userInteraction = true
(Swift),它就像一个魅力。总而言之:
tableView.backgroundView = constructMyViewWithButtons()
tableView.backgroundView!.userInteraction = true
【讨论】:
以上是关于iPhone:当 UITableView 没有单元格时添加背景按钮以查看的主要内容,如果未能解决你的问题,请参考以下文章
如何通过按下 iPhone 中的按钮将行/单元格动态添加到 UITableView
UITableView 自定义单元格在 iPad Storyboard 上不起作用,但在 iPhone 上起作用