在子视图上添加UITableViewController

时间:2019-01-16 05:41:09

标签: 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

注意:

AppDelegate中,如果我将rootController设置为OtherController(),则一切正常。如果将其更改回SomeView(),则会看到修改后的tableView。如果我单击它,它将消失。

This was the only thing that came close,但很遗憾,由于没有任何意义,我无法理解所提供的答案。

我需要理解,为什么它在被触摸等时会消失

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

2 个答案:

答案 0 :(得分:4)

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

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

将容纳您的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.

我希望这会有所帮助!

答案 1 :(得分:1)

您必须将 io.to(roomID).emit("agentMessage", "Welcome!"); 的子类的实例添加为另一个视图控制器的子视图控制器。您需要确保一些要点才能使它起作用。这些要点如下:

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

此处的代码:

TableViewController