8

我有一个grouped UITableView,我想在我的UITableView. 我正在使用 Storyboard 和 UITableViewController。我不太确定我需要在哪里添加代码或拖放 UI 元素。我尝试在 Storyboard 中添加一个 UIView 作为页脚视图,然后向该视图添加一个按钮,但这并没有达到始终保持在视图最底部的预期效果,类似于标签栏。此外,按钮应始终保持在最前面,UITableView 应在其后面滚动。

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

7 回答 7

11

如果您希望您UIButton位于屏幕底部而不管UITableView(即不在 内部UITableView)的滚动位置,那么您可能不应该使用UITableViewController子类。相反,如果您使用UIViewController子类,您可以简单地将 a 添加UITableView到您的根view属性并添加具有适当布局约束的 aUIButton或其他视图(例如 aUIToolbar等),以将其放置在屏幕底部 - 或您想要的任何位置. 这对于子类实际上是不可能的UITableViewController,因为根view属性必须是一个UITableView实例。

于 2013-08-11T21:31:45.880 回答
6

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

如果您对快速和简单感兴趣,请按照上面@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 的方法是创建 aUIViewController而不是UITableViewController. 向 VC添加一个TableView,将 TableView 的底部抬高到足以容纳下面的工具栏,拖放一个工具栏,将一个 UIBarButtonItem 拖放到它上面。从 UIBar 按钮项中按住 Control 单击并创建您的IBAction.

快速,简单,漂亮。

于 2013-08-11T22:11:10.277 回答
4

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

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

希望这有帮助!

于 2016-01-03T10:23:40.647 回答
3

是的,在 UITableViewConroller 中是可能的。在 UITableViewController 类的 viewDidLoad() 函数中添加以下代码:

    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()

在此处输入图像描述

于 2019-11-24T13:38:38.660 回答
2

我想为现有的解决方案提供另一种解决方案。您可以将法线ViewController用于您想要在其中包含粘性视图的主视图。然后,添加一个container viewViewController显示表格并添加另一个应该成为粘性视图的视图。

现在可以将 指向container view您的TableViewController并将约束添加到粘性视图以使其保持在表格下方。

Xcode 中的故事板

因此,表格不会与粘性视图重叠,并且粘性视图始终停留在屏幕底部。此外,此概念不需要对您现有的TableViewController.

粘性视图现场演示

于 2018-01-18T10:01:05.207 回答
1

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

斯威夫特 3

创建按钮:

对于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。此外,添加背景颜色和其他属性,这样您的按钮就可见了。

将视图添加到 NavigationController

self.navigationController?.view.addSubview(myButton)

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

于 2016-11-03T17:53:05.557 回答
0

我通过执行以下操作在 swift 1.2 中使用 TableViewController 实现了这一点(以防人们像我在寻找 swift 解决方案时遇到的那样)。

一旦你的故事板上有你的 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)
    }
于 2015-11-22T12:04:50.330 回答