繁体   English   中英

在子视图上添加UITableViewController

[英]Adding An UITableViewController on to a SubView

UITableViewController几乎占据了整个视图。 我需要一种方法来限制其高度,宽度并添加一些阴影等。为清楚起见,我不会显示UITableViewController的内容。

在不使用情节提要的情况下,我对UITableViewController细分:

// In another UIViewController

let otherController = OtherController() // A subclass of UITableViewController
let otherControllerView = otherController.view

someView.addSubView(otherControllerView)

[...] // bunch of constraints

笔记:

AppDelegate ,如果我将rootController设置为rootController OtherController() ,那么一切都会正常进行。 如果将其更改回SomeView()SomeView()看到修改后的tableView。 如果我应该单击它,它会消失。

这是唯一接近我的问题的事情,但可悲的是,我无法理解所提供的答案,因为这对我没有任何意义。

我需要了解,为什么触摸后它会消失等。

view.bringSubviewToFront(...)被证明是徒劳的。 我想把tableView呈现在自己的控制器中,而不是其他视图中?

因此,只需回答这个问题,您实际上有两种选择。 正如Rakesha所建议的那样,一种是最好的方法。 只需使用UITableView 将其添加为子视图。 做完了

将来,如果您确实希望将任何控制器添加到任何UIView ,请记住您需要将该控制器添加为child 例如,在您的情况下:

将包含您的UITableViewController的视图的控制器会将此类UITableViewController添加为子级。

self.addChild(yourUITableViewController)
self.whatEverViewContainer.addSubview(yourUITableViewController.view) 
// Take note of the view of your tableViewController above^.
// Then setup the constraints of your yourUITableViewController.view below.

我希望这有帮助!

您必须将UITableViewController的子类的实例添加为另一个视图控制器的子视图控制器。 您需要确保一些要点才能使它起作用。 要点如下所示:

  1. 创建TableViewController的实例
  2. 将其添加为另一个视图控制器的子视图控制器
  3. 将其视图添加为所需视图的子视图(您可以在viewDidLaod执行这些步骤,因为它们只需执行一次)
  4. 记住视图控制器的视图周期。 在父视图控制器放置其子视图之后,您必须保持对子视图控制器(即TableViewController的弱引用,以调整其视图框架。

代码在这里:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    let vc = TableViewController()
    addChildViewController(vc)
    view.addSubview(vc.view)
    vc.didMove(toParentViewController: self)
    childVC = vc
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    childVC?.view.frame = view.frame
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM