我有一个grouped UITableView
,我想在我UITableView
的最底部添加一个UIButton。我正在使用Storyboard和UITableViewController。我不太确定我需要添加代码或拖放UI元素。我已经尝试在Storyboard中添加一个UIView作为footerview,然后在该视图中添加一个按钮,但这并不具有始终保持在视图底部的预期效果,类似于tabbar。此外,按钮应始终位于最前端,UITableView应在其后滚动。
// tried this but it didn't work:
self.tablview.tableFooterView = [[UIView alloc] initwithview...]
答案 0 :(得分:9)
如果您希望UIButton
位于屏幕底部而不管UITableView
的滚动位置(即不在UITableView
内),那么您可能不应该使用一个UITableViewController
子类。相反,如果您使用UIViewController
子类,则只需将UITableView
添加到根view
属性并添加UIButton
或其他一些视图(例如{{1} 1}}等,具有适当的布局约束,将其放置在屏幕的底部 - 或者您想要的位置。对于UIToolbar
子类,这实际上是不可能的,因为根UITableViewController
属性必须是view
实例。
答案 1 :(得分:5)
好的,如果你想直接将工具栏添加到UITableViewController,你可以按照this tutorial中的说明创建一个“假的”页脚视图。
如果您对快速简便感兴趣,请按照@CharlesA上面的答案提供者进行操作,但如果您使用带有UIBarButtonItem的标准工具栏而不仅仅是圆形矩形按钮,它可能看起来更好。
如果您使用的是导航控制器,那么您可以取消隐藏工具栏(因为导航控制器已经附带了一个),并添加一个按钮来执行您需要的操作。编码将是这样的:
[self.navigationController setToolbarHidden:NO];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle: @"Button Name"
style: UIBarButtonItemStyleBordered
target: self
action: @selector(yourMethod:)];
self.toolbarItems = [ NSArray arrayWithObjects: buttonItem, nil ];
IMO的方法是创建UIViewController
而不是UITableViewController
。向VC添加TableView
,将TableView的底部抬高到足以适合其下的工具栏,拖放工具栏,将UIBarButtonItem拖放到其上。按住Control键并单击UIBar按钮项,然后创建IBAction
。
快速,简单,漂亮。
答案 2 :(得分:3)
有一种方法可以在不使用UIViewController子类的情况下将视图添加到UITableViewController的底部。
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, footerY, footerWidth, footerHeight)];
[self.navigationController.view addSubview:footerView];
希望这有帮助!
答案 3 :(得分:2)
我想为现有解决方案提供另一种解决方案。您可以在主视图中使用普通ViewController
,其中包含粘滞视图。然后,向container view
添加ViewController
以显示该表,并添加另一个应成为粘滞视图的视图。
现在可以将container view
指向您的TableViewController
,并为粘滞视图添加约束,使其保持在表格下方。
因此,表格不会与粘滞视图重叠,粘滞视图始终位于屏幕底部。此外,此概念不需要对现有TableViewController
进行任何更改。
答案 4 :(得分:1)
实际上,您可以添加UIButton以粘贴在视图的底部(或标题)中,如果您使用UITableViewController
或UIViewController
对于X
和Y
,我应用了整个视图大小,这样我就可以使用-
添加我喜欢的余量。然后,只需设置大小和宽度。
let myButton: UIButton = UIButton(CGRect(x: self.view.bounds.size.width - 66, y: self.view.bounds.size.height - 66, width: 50, height: 50))
注意强>
查看宽度和高度
66
的方式?好吧,你需要添加你的 边距高度和宽度的按钮。在这种情况下,50 + 16 = 66
。此外,以这种方式添加背景颜色和其他属性 你的按钮可见。
self.navigationController?.view.addSubview(myButton)
我确定你可以在Swift 2,1或Objective-C中弄清楚如何做到这一点。
答案 5 :(得分:0)
我通过执行以下操作在swift 1.2中使用TableViewController实现了这一点(如果人们遇到这种情况,就像我在寻找快速解决方案时那样)。
在故事板上放置TableViewController后,将View拖到控制器上。根据需要进行设置,右键单击(或按住Ctrl键单击)并拖动到源中以创建IBOutlet。然后单击并将视图拖动到顶部栏。更改为TableViewController的源代码,您需要派生UIScrollViewDelegate。您需要设置tableView.delegate = self
,然后才能执行以下操作
self.tableView.contentInset = UIEdgeInsetsMake(0.0, 0.0, floatingView.frame.height, 0.0)
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, floatingView.frame.height, 0.0)
floatingView.frame.origin.y = self.tableView.bounds.origin.y + self.tableView.frame.height - floatingView.frame.height
floatingView.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin
self.view.addSubview(floatingView)
然后
override func scrollViewDidScroll(scrollView: UIScrollView) {
floatingView.frame = CGRectMake(self.floatingView.frame.origin.x, self.tableView.bounds.origin.y + self.tableView.frame.height - floatingView.frame.height, self.floatingView.frame.size.width, self.floatingView.frame.size.height)
}
答案 6 :(得分:0)
是的,可以在UITableViewConroller中使用
let bottomView = UIView()
bottomView.backgroundColor = .red // or your color
bottomView.frame = CGRect(x: 0, y: UIScreen.main.bounds.size.height - 78, width: tableView.frame.size.width, height: 78) // 78 or your size of view
navigationController?.view.addSubview(bottomView)
tableView.tableFooterView = UIView()