将 UITableViewController 添加到子视图

Syl*_*lar 1 ios swift swift4

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

在没有使用故事板的情况下,我细分了UITableViewController

// In another UIViewController

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

someView.addSubView(otherControllerView)

[...] // bunch of constraints
Run Code Online (Sandbox Code Playgroud)

笔记:

在 中AppDelegate,如果我将rootControlleras设置为OtherController(),则一切正常。如果我将它改回SomeView(),我会看到我修改后的 tableView。如果我应该点击它,它就会消失。

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

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

view.bringSubviewToFront(...)被证明是徒劳的。我认为 tableView 应该在它自己的控制器中呈现而不是在另一个视图中呈现?

Gle*_*enn 5

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

将来,如果您真的希望将任何控制器添加到 any 上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.
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助!