2

我有一个自定义视图控制器,我在其中创建了一个带有多个按钮的自定义导航栏。我使用该自定义视图控制器作为多个子控制器的父级(在多个控制器中使用相同的导航栏)。我正在导航到 someController一些按钮点击。问题是,每次单击该按钮时都会创建该视图控制器的实例。当我导航返回时,会显示相同的控制器。

这是菜单按钮单击的操作:

@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 的新实例。如何避免创建多个实例?我没有使用导航控制器。

如何知道该控制器已在此场景中呈现。

4

1 回答 1

0

创建var menuVC变量作为实例变量,而不是局部变量,然后像下面这样检查 nil。

if menuVC != nil {
// use the created instance of menuVC
} else {
// create menuVC 
}

这样,您只有一个menuVC. 请评论任何疑问。

于 2018-07-30T12:17:41.850 回答