【发布时间】:2017-04-07 10:23:19
【问题描述】:
我有一个视图控制器,它可以像这样呈现另一个视图控制器
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
let qrScannerViewController = QRScannerViewController()
qrScannerViewController.presentedBy = self
self.present(qrScannerViewController, animated:true, completion: nil)
// Do any additional setup after loading the view.
}
qrScannerViewController(呈现的视图控制器)然后调用
self.dismiss(animated:true, completion: nil)
据我了解,无论如何都将呈现视图控制器称为关闭函数。
问题是,一旦呈现的视图控制器被解除,正在呈现的视图控制器的 viewDidLoad 被再次调用,这意味着视图控制器被再次呈现。
任何想法如何解决这个问题?
即使我使用委托,呈现视图控制器的 viewDidLoad 也会再次被调用
谢谢
呈现视图控制器在 UITabController 中定义:
let qrPlaceholderViewController = QRPlaceholderViewController()
let controllers = [restaurantNavController,favouritesViewController, qrPlaceholderViewController, profileViewController]
self.viewControllers = controllers
【问题讨论】:
-
正确检查可能是你有一些其他地方也为 self.present 编码。
-
viewDidLoad不应该被再次调用,也许你重复了viewWillAppear中的代码? -
@jjatie 我没有定义 viewWillAppear?控制器包含在选项卡中,这可能是为什么?
-
故事板中是否设置了
QRScannerViewController? -
@Idan这里的问题是如何防止每次出现初始VC时都调用代码。
标签: ios swift viewdidload presentviewcontroller