[英]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
的子类的实例添加为另一个视图控制器的子视图控制器。 您需要确保一些要点才能使它起作用。 要点如下所示:
TableViewController
的实例 viewDidLaod
执行这些步骤,因为它们只需执行一次) 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.