【发布时间】:2017-05-08 10:23:32
【问题描述】:
我有一个包含segmentedControl 的viewController。我有一个 VCA 和 VCB,它们位于 segmentedControl 中。当我点击第二段时,VCB 出现。现在我正在从 VCB 推送另一个 ViewController。但是当从那个 viewController 回来时,VCA 的viewDidAppear 被调用了。这对我来说很奇怪。因为用户在 VCB 上,所以为什么要调用 VCA 的 viewWillAppear 和 viewDidAppear?这是一个解释更多的图表
这就是我将 viewControllers 添加到 segmentedControl 的方式
func switchToViewController(viewController: UIViewController, selectedIndex: Int) {
viewController.removeFromParentViewController()
viewController.view.removeFromSuperview()
addChildViewController(viewController)
viewController.view.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(viewController.view)
// Setting constraints of the container view
NSLayoutConstraint.activate([
viewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0),
viewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0),
viewController.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 50),
viewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0)
])
viewController.didMove(toParentViewController: self)
}
我只是无法理解这种行为。所以请指导我。
【问题讨论】:
-
包含分段控制的viewcontroller和VCA一样吗?
-
no 他们不一样。 viewController 包含 segmentedControl 是一个不同的 VC 我们称之为 VCSegmentedControl
-
为什么要删除
viewController并添加相同的viewController? -
实际上,当用户点击段控件时,我正在使用相同的功能。所以我在再次添加之前将其删除,否则我认为它会添加多次。
-
尝试使用容器视图。
标签: ios swift uisegmentedcontrol viewwillappear viewdidappear