gpt4 book ai didi

ios - 在 Swift 中使用 switch 语句来改变 View Controller

转载 作者:行者123 更新时间:2023-11-28 13:26:42 24 4
gpt4 key购买 nike

我刚刚开始学习 Swift,并且遇到了创建 iOS 应用程序的第一个主要障碍。

情况是,我有一个包含幻灯片菜单的初始 View Controller 。我在此 View Controller 中使用了一个函数,该函数具有 switch 语句以允许用户从滑出菜单中进行选择。例如。 “主页”、“关于”和“图像列表”。

现在我没有任何错误消息,当我从滑出式菜单中选择“关于”时,它只会加载似乎是默认屏幕的内容。

一般来说,我要解决的问题是:使用下面的代码,加载单独 View 的最佳方式是什么?如果没有看到我的所有代码,这可能是一个更难的问题,但是什么可能导致 .about switch 语句未加载预期的 View ?

作为引用,case .imageList 是我开始和快速查看的地方。

    func transitionToNew(_ menuType: MenuType) {
//let title = String(describing: menuType).capitalized
topView?.removeFromSuperview()

switch menuType {
case .about:
let view = UIView()
let profileVC = AboutViewController()
view.addSubview(profileVC.view)
// Method creates a parent-child relationship between current view controller and profileVC
addChild(profileVC)
case .imageList:
let view = UIView()
view.backgroundColor = .white
view.frame = self.view.bounds
self.view.addSubview(view)
self.topView = view
self.title = "Image List"

default:
self.title = nil // Reset title to match launch screen
break
}
}

最佳答案

与其像您在此处声明“使用下面的代码,加载单独 View 的最佳方式是什么?”那样加载 View ,不如加载另一个 View Controller 。

您可以通过使父 VC 以模态方式呈现子 VC 或将所有 View Controller 添加到管理相关 View Controller 堆栈的导航 Controller 来创建 View Controller 之间的父子关系。

这里有几种方法。

  1. 将新的 View Controller (例如:About VC)加载为模态视图 Controller 。 (mainVC.present)

    switch menuType {
    case .about:
    let profileVC = AboutViewController()
    viewController.present(profileVC, animated: false, completion: nil)
    default:
    self.title = nil // Reset title to match launch screen
    break
    }
  2. 在导航 Controller 中加载主 VC 并制作导航 Controller 将新 View 推送到导航上堆栈。

    switch menuType {
    case .about:
    let profileVC = AboutViewController()
    self.navigationController?.pushViewController(targetViewController!, animated: true) //Note : for this to work when you create your main (parentVC) that should also be embeded in navigation controller.

关于ios - 在 Swift 中使用 switch 语句来改变 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244577/

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