【发布时间】:2019-09-04 15:02:46
【问题描述】:
我在我的应用程序上发现了一个非常奇怪的行为,视图控制器的结构如下:
TabBarViewController 包含:
- NavigationController(root is HomeViewController)
- NavigationController(root is SearchViewController)
- NavigationController(root is ProfileViewController)
当我在 HomeViewController 中时,我以模态方式呈现 PremiumViewController
@objc func premiumTapped() {
let premiumViewController = PremiumViewController(viewModel: PremiumViewModel(networkService: NetworkService(), purchasesService: PurchasesService.shared))
navigationController?.present(premiumViewController, animated: true, completion: nil)
}
到这里为止都很好。
现在我解雇PremiumViewController.
dismiss(animated: true, completion: nil)
发生的情况是HomeViewController 称它为init() 和viewDidLoad()!
这怎么可能? HomeViewController一直存在,为什么又调用init呢?
【问题讨论】:
-
在
HomeViewController的init中放置一个断点,看看是什么调用它。 -
@rmaddy OMG 你是最棒的,非常感谢你让我第 10 次在这个断点处寻找。我终于看到了这个问题,我正在 viewWillAppear 的 Tabbarviewcontroller 中创建视图控制器!该死的!非常感谢:)
标签: ios swift uitabbarcontroller modalviewcontroller