创build一个粘贴到UITableView底部的UIView

我有一个grouped UITableView ,我想添加一个UIButton到我的UITableView最底部。 我正在使用Storyboard和一个UITableViewController。 我不太清楚需要添加代码或拖放UI元素的位置。 我已经尝试添加一个UIView作为Storyboard中的footerview,然后向该视图中添加一个button,但是这并没有像Tabbar那样总是停留在视图最底部的效果。 另外,button应该始终保持在最前沿,UITableView应该在它后面滚动。

 // tried this but it didn't work: self.tablview.tableFooterView = [[UIView alloc] initwithview...] 

如果你想让你的UIButton在屏幕的底部而不pipeUITableView的滚动位置(即不在UITableView内部),那么你可能不应该使用UITableViewController子类。 相反,如果您使用UIViewController子类,则可以简单地将UITableView添加到您的根view属性中,并添加一个UIButton或其他视图(如UIToolbar等),使其具有合适的布局约束,以将其放置在屏幕的底部 -或者任何你想要的地方。 这对于UITableViewController子类来说是不可能的,因为根view属性必须是UITableView实例。

好的,如果你想直接添加工具栏到UITableViewController,你可以按照本教程中的说明创build一个“假”页脚视图。

如果您对快速简单的感兴趣,请按照@CharlesA上面的答案,但如果您使用带有UIBarButtonItem的标准工具栏,而不是使用Round Rect Button,则可能会更好。

如果你使用的是导航控制器,那么你可以取消隐藏你的工具栏(因为导航控制器已经有一个),并添加一个button来做你所需要的。 编码将是这样的:

 [self.navigationController setToolbarHidden:NO]; UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithTitle: @"Button Name" style: UIBarButtonItemStyleBordered target: self action: @selector(yourMethod:)]; self.toolbarItems = [ NSArray arrayWithObjects: buttonItem, nil ]; 

国际海事组织的方式是创build一个UIViewController而不是一个UITableViewController 。 将一个TableView到VC中,将TableView的底部放到足够的位置,然后拖放一个工具栏,拖放一个UIBarButtonItem。 按住Control键并从UIBarbutton项目单击并创build您的IBAction

快速,简单,漂亮。

有一种方法可以在不使用UIViewController子类的情况下将视图添加到UITableViewController的底部。

 UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, footerY, footerWidth, footerHeight)]; [self.navigationController.view addSubview:footerView]; 

希望这个帮助!

我用Swift1.2中的TableViewController实现了这个function,以防万一遇到这种情况,就像我在寻找快速解决scheme时一样。

一旦你的故事板上有你的TableViewController拖动一个视图到控制器上。 根据需要进行设置,然后右键单击(或按住Ctrl并单击)并拖动到源代码中以创buildIBOutlet。 然后点击并拖动视图到顶部栏 在顶栏中查看 。 切换到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) } 

实际上,你可以添加UIButton来粘贴在视图的底部(或标题),不pipe你使用的是UITableViewController还是UIViewController

Swift 3

创buildbutton:

对于XY我应用整个视图大小,这将允许我加上我喜欢的金额。 然后,只需设置大小和宽度。

 let myButton: UIButton = UIButton(CGRect(x: self.view.bounds.size.width - 66, y: self.view.bounds.size.height - 66, width: 50, height: 50)) 

注意

看看宽度和高度是如何66 ? 那么,你需要添加你的边缘到button的高度和宽度。 在这种情况下, 50 + 16 = 66 。 此外,添加你的背景颜色和其他属性,这样你的button是可见的。

将视图添加到NavigationController

 self.navigationController?.view.addSubview(myButton) 

我相信你可以弄清楚如何在Swift 2,1或Objective-C中做到这一点。

试试这个。 这是一个Swift版本。 你需要自己把它改成ObjC

  let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: self.view.bounds.size.height - tableView.tableHeaderView!.bounds.size.height - CGFloat(menuTitles.count) * 44.0)) let logoutButton = UIButton (frame: CGRect(x: 0, y: footerView.bounds.size.height - 44, width: self.tableView.bounds.size.width, height: 44)) let line = UIView(frame: CGRect(x: 0, y: 0, width: logoutButton.bounds.size.width, height: 1)) line.backgroundColor = UIColor.lightGray logoutButton.addSubview(line) logoutButton.setTitle("Logout", for: .normal) footerView.addSubview(logoutButton) tableView.tableFooterView = footerView