gpt4 book ai didi

Xcode - 如何以编程方式在容器 View 中嵌入/更改 View Controller ?

转载 作者:行者123 更新时间:2023-12-04 01:37:36 25 4
gpt4 key购买 nike

我正在尝试以编程方式设置/或更改嵌入式 View Controller 里面 Controller View .

我有 3 个不同的 View Controller ,我想在容器 View 中显示它们,这一切都取决于用户是否登录。

我环顾四周并尝试了一堆代码,我发现一个有效,但代码改变了自我 View ,而不是 View 容器 View 。

我尝试过的很多代码也没有出现在 Swift 3 中,所以作为一个新的应用程序开发人员,这压力很大,因为我试图将其转换为 Swift 3。

任何人都可以提供更改 View 容器内的嵌入式 View Controller 的解决方案吗?谢谢。

最佳答案

我可能已经找到了解决方案。我在这里回答,以防它可以帮助我的情况下的任何其他人。

我所做的是添加一个新的 View Controller 然后将其嵌入 查看容器 - 这将作为“主 View ”工作 - 然后我使用这个空白 View Controller 来决定应该在空白的自身内更改哪个其他 View Controller 。

这是我在空白 View Controller 中的一些代码,但我想空白 View Controller 也可以用作主 View Controller (在我的情况下为“帐户”),然后它可以将登录/注册 View 添加为 subview .

override func viewDidLoad() {
super.viewDidLoad()

updateView()
}

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

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

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

return viewController
}()

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

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

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

return viewController
}()

private 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)
}

private 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()
}

private func updateView() {

add(asChildViewController: registerViewController)

/*
if segmentedControl.selectedSegmentIndex == 0 {
remove(asChildViewController: sessionsViewController)
add(asChildViewController: summaryViewController)
} else {
remove(asChildViewController: summaryViewController)
add(asChildViewController: sessionsViewController)
}
*/
}

归功于此人: https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

关于Xcode - 如何以编程方式在容器 View 中嵌入/更改 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45118016/

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