gpt4 book ai didi

ios - 在 subview Controller 之间切换

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:57 25 4
gpt4 key购买 nike

我有一个包含多个容器 View 的 View Controller ,我们将其称为 HomeViewController。我这样声明这些容器 View (childViewControllers)(每个容器 View 都有自己的嵌入式 viewController:

private lazy var startContactViewController: StartContactViewController = {
//Load Storyboard
let storybaord = UIStoryboard(name: "Main", bundle: Bundle.main)

//Instantiate View Controller
var viewController = storyboard?.instantiateViewController(withIdentifier: "StartContact") as! StartContactViewController

//Add View Controller as Child View Controller
self.add(asChildViewController: viewController)

return viewController
}()

private lazy var stopContactViewController: StopContactViewController = {
//Load Storyboard
let storybaord = UIStoryboard(name: "Main", bundle: Bundle.main)

//Instantiate View Controller
var viewController = storyboard?.instantiateViewController(withIdentifier: "StopContact") as! StopContactViewController

//Add View Controller as Child View Controller
self.add(asChildViewController: viewController)

return viewController
}()

private lazy var startDayViewController: StartDayViewController = {
//Load Storyboard
let storybaord = UIStoryboard(name: "Main", bundle: Bundle.main)

//Instantiate View Controller
var viewController = storyboard?.instantiateViewController(withIdentifier: "StartDay") as! StartDayViewController

//Add View Controller as Child View Controller
self.add(asChildViewController: viewController)

return viewController
}()

private lazy var loadingViewController: LoadingViewController = {
//Load Storyboard
let storybaord = UIStoryboard(name: "Main", bundle: Bundle.main)

//Instantiate View Controller
var viewController = storyboard?.instantiateViewController(withIdentifier: "loading") as! LoadingViewController

//Add View Controller as Child View Controller
self.add(asChildViewController: viewController)

return viewController
}()

然后我有这两个函数来添加和删除 childViewControllers:

func add(asChildViewController viewController: UIViewController) {
//Add Child View Controller
addChildViewController(viewController)

//Add Child View as Subview
view.addSubview(viewController.view)

//Configure Child View
viewController.view.frame = view.bounds
viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

//Notify Child View Controller
viewController.didMove(toParentViewController: self)
}

func remove(asChildViewController viewController: UIViewController) {
// Notify Child View Controller
viewController.willMove(toParentViewController: nil)

// Remove Child View From Superview
viewController.view.removeFromSuperview()

// Notify Child View Controller
viewController.removeFromParentViewController()
}

当我的应用首次加载时,会显示 StartDayViewController。在这个 View Controller 中,它们是一个按钮。当用户按下该按钮时,我希望删除 StartDayViewController 并显示 StartContactViewController。如何从 StartDayViewController 实现此目的?

我还附上了 Storyboard的图片。 Storyboard image

最佳答案

你可以使用协议(protocol)来做到这一点

protocol StartVcProtocol {
func startButtonPressed()
}

让HomeViewController实现

extension HomeViewController: StartVcProtocol {
func startButtonPressed() {
// start button pressed -- do your remove and add stuff here
}
}

现在在 StartVc 中

class StartVc: UIViewController {

var delegate: StartVcProtocol?


//inside you start button iBaction
delegate?.startButtonPressed()

}

然后在延迟初始化 StartVc 时

viewController.delegate = self

希望你能得到所有的碎片。

关于ios - 在 subview Controller 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53176565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com