使用 NavigationController 将视图添加到 TableViewController

Posted

技术标签:

【中文标题】使用 NavigationController 将视图添加到 TableViewController【英文标题】:Add View to TableViewController with NavigationController 【发布时间】:2019-01-28 09:56:47 【问题描述】:

为了向UITableViewController 添加视图,我将视图添加到navigationController,如下所示:

self.navigationController?.view.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
view.rightAnchor.constraint(equalTo: (self.navigationController?.view.rightAnchor)!).isActive = true
view.bottomAnchor.constraint(equalTo: (self.navigationController?.view.bottomAnchor)!).isActive = true
view.widthAnchor.constraint(equalToConstant: 70).isActive = true
view.heightAnchor.constraint(equalToConstant: 120).isActive = true

但是当你想要推送一个新的ViewController 时,它会保留添加的视图 (myView)。

我尝试将myView 添加到viewtableView,如下所示:

self.view.addSubview(myView)
self.tableView.addSubview(myView)

但两者都不起作用。 我知道我可以使用UIViewController 并添加UITableView,然后将myView 添加到UIViewController 会更容易。

我应该将myView 添加到另一个视图吗?

【问题讨论】:

【参考方案1】:

UITableViewController 的 View 是 UITableView,所以不能在表格顶部的控制器中添加子视图。

您必须从 UIViewController 派生才能获得完整的布局控制。 不要使用 UITableViewController,而是使用 UIViewController 并将 UITableView 放入其中。

【讨论】:

【参考方案2】:

是的,在 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()
    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()[enter image description here][1]

【讨论】:

以上是关于使用 NavigationController 将视图添加到 TableViewController的主要内容,如果未能解决你的问题,请参考以下文章

通过 navigationController 使用 segue 传递数据

将 NavigationController 添加到当前视图

使用当前模态将数据从一个 uiviewcontroller 发送到另一个 navigationcontroller

如何使用NavigationController将数据从UIPickerView传递到以前的ViewController

如何将 NavigationController 保持在 subViewController 方向?

使用 NavigationController.PushViewController 的 BeginAnimations 和 CommitAnimations