如何在 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的最后一行添加一行字符串?

如何通过平滑滚动将最后一行添加到 UITableView?

如何在 UITableView 中激活下一个和上一个 UITextField?

如何在编辑模式下替换 Grouped UITableView 的加号/减号按钮?