gpt4 book ai didi

ios - 以编程方式快速更改 View Controller

转载 作者:行者123 更新时间:2023-11-28 15:45:56 25 4
gpt4 key购买 nike

我想在按下按钮时以编程方式从 FirstView 切换到 SecondView,我不使用 Storyboard。这是我的代码:

AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let initialViewController = FirstController()
window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = initialViewController
self.window!.makeKeyAndVisible()
return true
}
}

FirstView.swift

class FirstView: UIView {
var btnImage = UIButton(image: "Image01")

override init(frame: CGRect){
print("FirstView init")
super.init(frame: screenSize)
self.backgroundColor = UIColor.red
self.btnImage.translatesAutoresizingMaskIntoConstraints = false
addSubview(self.btnImage)
self.btnImage.alignLeftOfViewVoid(padding: 12)
self.btnImage.addTarget(self.parentViewController, action: #selector (FirstController.onClickListener(object:)), for: .touchUpInside)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

deinit{
self.removeFromSuperview()
}
}

第二 View .swift

class SecondView: UIView {

override init(frame: CGRect){
print("SecondView init")
super.init(frame: screenSize)
self.backgroundColor = UIColor.green
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

deinit{
self.removeFromSuperview()
}
}

FirstController.swift

class FirstController: UIViewController {
init(){
super.init(nibName: nil, bundle: nil)
print("MainController")
self.view = FirstView()
self.view.backgroundColor=UIColor.red
}

override var prefersStatusBarHidden: Bool {
return true
}

func onClickListener(object : UIButton!) {
print("Click to view 2")
weak var view = SecondController()
self.navigationController?.pushViewController(view!, animated: true)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

SecondController.swift

class SecondController: UIViewController {
init(){
super.init(nibName: nil, bundle: nil)
print("SecondController")
self.view = SecondView()
self.view.backgroundColor=UIColor.green
}

override var prefersStatusBarHidden: Bool {
return true
}

func onClickListener(object : UIButton!) {
print("Click to view 1")
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

我尝试了不同的解决方案,但没有奏效。非常感谢

最佳答案

您需要将 FirstController 放在导航 Controller 中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let initialViewController = FirstController()
let navController = UINavigationController(rootViewController: initialViewController)
window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = navController
self.window!.makeKeyAndVisible()
return true
}

现在您可以从 FirstController 推送 SecondController

关于ios - 以编程方式快速更改 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057714/

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