【问题标题】:Change view controller on click UIButton Swift (without storyboard)单击 UIButton Swift 更改视图控制器(无情节提要)
【发布时间】:2018-05-18 14:31:43
【问题描述】:

单击按钮时如何更改视图控制器。我没有使用情节提要。这些视图都是以编程方式创建的。

我尝试将目标添加到按钮,然后调用以下方法来推送新的视图控制器:

func switchView() {
   print(123)
   let prodListController = ProductListController()
   self.navigationController?.pushViewController(prodListController, animated: true)
}

这是从 UIviewController 类中调用的。

任何帮助将不胜感激。谢谢!!

编辑: 做了以下修改:

window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ProductListController())

【问题讨论】:

  • 如果这段代码没有做任何事情,那么我认为你的navigationController 可能是nil

标签: ios swift swift3 uiviewcontroller uibutton


【解决方案1】:

你在使用导航控制器吗?看起来它是“nil”...

你可以用“show”来代替:

self.show(ProductListController(), sender: self)

但是,如果你想使用navigationController,你必须先设置它。 例如(假设您将使用 navigationController 启动您的应用程序):

关于 didFinishLaunchingWithOptions (AppDelegate.swift):

// Override point for customization after application launch.
self.window = UIWindow(frame: UIScreen.main.bounds)

let initialViewController = NavViewController()

self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()

return true

关于 NavViewController.swift 的 viewDidLoad:

self.pushViewController(ViewController(), animated: true)

然后,您可以将代码用于按钮:

func switchView() {
    print(123)
    let prodListController = ProductListController()
    self.navigationController?.pushViewController(prodListController, animated: true)
}

【讨论】:

  • 我已将代码添加到 AppDelagate。单击按钮时如何在其上添加视图控制器?
  • 您可以使用 switchView() 中的代码(见上文)来显示一个新的视图控制器。如果做不到,请告诉我当前正在显示的视图控制器的名称,以及您要显示的视图控制器。
  • 我的代码与 setupView 完全相同,但它没有显示新视图。
  • 你的导航视图控制器有 NavViewController.swift 吗?还有一个 ViewController.swift 用于您的初始视图控制器?还有一个 ProductListController.swift 用于您的新视图控制器?在您的按钮操作方法上创建一个断点并检查控制台“po self.navigationController?.viewControllers”
  • 我没有 NavViewController.swift
【解决方案2】:

您可以尝试使用此代码推送另一个视图控制器

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var navVC = UINavigationController()
var yourVC = YourViewController()
navVC.viewControllers = [yourVC]
self.window!.rootViewController = navVC
self.window?.makeKeyAndVisible()

希望这能解决您的问题。

【讨论】:

  • 我按照你的做法做了一些修改:
  • 如何向导航控制器添加视图?例如,当我单击一个按钮时,我想要一个新的视图控制器。
  • 使用self.navigationController?.viewControllers = [ViewController]这个添加ViewController。
猜你喜欢
  • 2011-12-23
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多