如何在 UITableVIew 下添加 UIButton?
Posted
技术标签:
【中文标题】如何在 UITableVIew 下添加 UIButton?【英文标题】:How To Add UIButton Below UITableVIew? 【发布时间】:2011-08-03 21:16:03 【问题描述】:我的 VC 是 UITableViewController
的子类,我正在尝试在屏幕底部添加 UIButton
。
当我的 VC 是一个带有 UITableView
对象的 UIView
时,我知道如何执行此操作,但是当我对 UITableView
进行子类化时如何添加此按钮?我尝试在 IB 中添加它,但它只允许我将它添加为表格的页脚,它仅在表格底部滚动到时可见。有什么想法吗?
另外,如何在表格后面添加图像同时保持单元格为白色?当类是UIView
时很容易,但在这种情况下不确定。
【问题讨论】:
【参考方案1】:建议 1:您可以创建一个单独的视图,其中包含您的 UIButton 并放置在 UITableView 下方。
备注:这很有用,因为当您滚动 tableView 时,默认页脚将粘在底部。
// position(change according to your position) of the bottom view
//and set the size of the button
UIView* bottomView = [[UIView alloc] initWithFrame:CGRectMake(5.0, 460.0, 300.0, 80.0)];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// position(change according to your position) of the button inside bottomView
//and set the size of the button
myButton.frame = CGRectMake(20, 20, 200, 44);
[myButton setTitle:@"Click Me!" forState:UIControlStateNormal];
// add targets and actions
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
// add to a view
[bottomView addSubview:myButton]; // add the button to bottom view
[self.view addSubView:bottomView]; //add bottom view main view
建议2:您可以使用 viewForFooterInSection 委托方法。您可以在其中创建视图并添加 UILabel。 viewForFooterInSection 返回 UIView,您可以返回包含 UILabel 的视图
备注:当您滚动 tableView 时,默认页脚将与您的 tableView 一起移动
注意:
如果您的视图是 UITableViewController 的子类,那么将其更改为 UIViewController 并在您的 nib 文件中创建一个视图并将您的 tableView 拖到视图下并将引用类更改为您的 UIViewController。现在创建一个 UITableView* myTableView 的 IBOutlet 并将其连接到您的 nib 文件。您只需将 VC 文件中的 self 更改为 [self.myTableView reloadData];
【讨论】:
它实际上是一个 UIButton,而不是一个 UILabel。这仍然适用于您提供的选项 1 吗? 谢谢,你能不能只添加代码,让我将新的 uiview 添加为 subivew 并将其放置在 viewdidload 中的表格下方?谢谢。 我已经增强了我的答案并在那里自己编写了代码。 :) 谢谢,由于某种原因,该代码使按钮与 tableview 的页脚一起滚动 没有。它不会,这就是为什么我们将 tableView 和 button 分别放在不同的部分。您可以滚动您的 tableView,但您的按钮(添加到 bottomView)将始终保持在底部。【参考方案2】:很好的代码
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 80)] autorelease];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10,10, 300, 40);
[btn setTitle:@"showProfile" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(your_function) forControlEvents:UIControlEventTouchUpInside];
[headerView addSubview:btn];
tbl.tableFooterView = headerView;
【讨论】:
tbl.tableFooterView = headerView;
将页眉指定为页脚 — 很有趣。
@vikingosegundo 当你在倒立模式下拿着手机时很好;)【参考方案3】:
这些方法的问题在于,UIButton
不会针对不同的设备尺寸保留在屏幕底部,因为您为页脚设置了固定高度,并且此类页脚固定在表格的底部(延伸仅到最后一个单元格的底部)。
我最终做的是获取主窗口视图的句柄并将按钮固定到底部。
如果有人觉得有帮助,我可以提供代码。
【讨论】:
【参考方案4】:在tableView
中添加UIView
。视图的子视图是按钮并直接在您的 ViewController 中创建 IBAction
。我正在使用它
【讨论】:
【参考方案5】:要在固定到屏幕底部的UITableViewController
内的UITableView
上方查看(使用自动布局):
斯威夫特 4
// add inset to bottom of the table view, bottom = view height
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)
// create the view
let myView = UIView()
myView.backgroundColor = .red
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)
myView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
myView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
myView.bottomAnchor.constraint(equalTo: myView.bottomAnchor).isActive = true
请注意,您必须在viewDidAppear()
中插入此代码,以防止表格视图的zIndex 大于myView
。
【讨论】:
以上是关于如何在 UITableVIew 下添加 UIButton?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIToolbar 完成按钮中将焦点从一个 UIButton 设置到另一个 UIButton
如何在 UITableview DataSource 方法中的 UIContextualAction 中添加图像
如何在iOS中的UITableView的最后一行添加一行字符串?