【发布时间】:2018-09-28 15:18:16
【问题描述】:
我对 UIViewController 的遏制有疑问。为简单起见,我制作了一个示例项目并定义了 SecondViewController 类。
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.black
NSLog("In second controller")
// Do any additional setup after loading the view.
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
NSLog("Transitioning in second controller")
}
}
在第一个控制器中,我执行以下操作:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let secondController = SecondViewController()
addChild(secondController)
view.addSubview(secondController.view)
secondController.view.frame = self.view.bounds
secondController.didMove(toParent: self)
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
NSLog("Transitioning in first controller")
}
}
当我运行程序时,它会运行并且日志如下:
2018-09-28 19:11:15.491211+0400 ViewContainment[3897:618645] In second controller
2018-09-28 19:11:17.254221+0400 ViewContainment[3897:618645] Transitioning in first controller
问题:
这是否意味着所有 UIViewController 通知都将由第一个视图控制器处理,并且不会向第二个视图控制器发送任何通知?
将第二个视图控制器中的按钮单击操作添加到第一个视图控制器中的选择器是否安全?
【问题讨论】:
标签: ios uiviewcontroller uikit