adding/removing 子视图时只调用一次 API

Call API only once when adding/removing subview

我有一个分段控件,单击分段可通过将视图添加到容器视图来显示视图。单击其他段控件时,将删除旧视图并使用下面给出的函数添加新视图。以这种方式添加 VC 会调用 viewDidLoad,我从 API 获取数据。当添加 VC 时,每次单击时间段都会调用 API。如何防止每次添加视图时都调用 API?

有什么方法可以隐藏旧视图而不是将其删除,这将阻止每次单击片段时实例化 VC。

或者有没有其他更好的方法来显示 VCs 在分段点击时?

@IBAction func show(_ sender: UISegmentedControl) {
   
    switch sender.selectedSegmentIndex {
    case 0:
        let vc1 = VC1.instantiate()
        
        self.cycleFromViewController(oldViewController: self.currentVC!, toViewController: vc1)
        self.currentVC = vc1
           
    case 1:
        let vc2 = VC2.instantiate()
        self.cycleFromViewController(oldViewController: self.currentVC!, toViewController: vc2)
        self.currentVC = vc2
        
    default:
        break
            
    }
}


func cycleFromViewController(oldViewController: UIViewController, toViewController newViewController: UIViewController) {
    oldViewController.willMove(toParent: nil)
    self.addChild(newViewController)
    self.addSubview(subView: newViewController.view, toView:self.containerView!)
    newViewController.view.alpha = 0
    newViewController.view.layoutIfNeeded()
    UIView.animate(withDuration: 0.5, animations: {
        newViewController.view.alpha = 1
        oldViewController.view.alpha = 0
    },
                   completion: { finished in
                    oldViewController.view.removeFromSuperview()
                    oldViewController.removeFromParent()
                    newViewController.didMove(toParent: self)
    })
}

创建

var vc1,vc2,currentVC:UIViewController? 

然后在 viewDidLoad 中创建并分配 vc1vc2 并设置 currentVC = vc1

然后和他们一起玩 view.isHidden