Ios 避免视图控制器的多实例创建
我有一个自定义视图控制器,我在其中创建了一个带有多个按钮的自定义导航栏。我将该自定义视图控制器用作多个子控制器的父级(以便在多个控制器中使用相同的导航栏)。我正在某个按钮上导航到某个控制器。问题是,每次我点击该按钮时,都会创建该viewcontroller的实例。当我返回时,会显示相同的控制器 这是菜单按钮单击的操作:Ios 避免视图控制器的多实例创建,ios,swift,uiviewcontroller,uiview-hierarchy,Ios,Swift,Uiviewcontroller,Uiview Hierarchy,我有一个自定义视图控制器,我在其中创建了一个带有多个按钮的自定义导航栏。我将该自定义视图控制器用作多个子控制器的父级(以便在多个控制器中使用相同的导航栏)。我正在某个按钮上导航到某个控制器。问题是,每次我点击该按钮时,都会创建该viewcontroller的实例。当我返回时,会显示相同的控制器 这是菜单按钮单击的操作: @objc func showMenu(){ let storyBoard = UIStoryboard(name: "Main", bundle: nil) let menuV
@objc func showMenu(){
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let menuVC = storyBoard.instantiateViewController(withIdentifier: "MenuVC") as! MenuVC
if menuVC.view.window ==nil {
UIView.transition(with: self.view, duration: 0.5, options: .curveEaseIn, animations: {
self.present(menuVC, animated: true, completion: nil)
})
} else {
// view controller is visible
}
}
@objc func backBtnPressed(){
self.dismiss(animated:true,complition:nil)
}
这是“后退”按钮单击的操作:
@objc func showMenu(){
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let menuVC = storyBoard.instantiateViewController(withIdentifier: "MenuVC") as! MenuVC
if menuVC.view.window ==nil {
UIView.transition(with: self.view, duration: 0.5, options: .curveEaseIn, animations: {
self.present(menuVC, animated: true, completion: nil)
})
} else {
// view controller is visible
}
}
@objc func backBtnPressed(){
self.dismiss(animated:true,complition:nil)
}
我尝试了viewController.view.window,但问题是每次按下按钮时都会创建baseViewController的新实例。如何避免创建多个实例?我没有使用导航控制器
如何知道控制器已在此场景中出现。创建
var menuVC
变量作为实例变量,而不是局部变量,然后按如下方式检查是否为零
if menuVC != nil {
// use the created instance of menuVC
} else {
// create menuVC
}
这样,您只有一个
menuVC
的实例。请评论任何疑问。Ya,应该是var menuVC,它只是一个例子。