我正在使用下面的代码,以编程的方式转到另一个视图,在运行时没有错误。但我不知道为什么不会有这样的观点
我使用的代码:
let images = self.storyboard?.instantiateViewController(withIdentifier:"Collection") as! UICollectionViewController
self.navigationController?.pushViewController(images, animated: true)
我想去CollectionView.swift
发布于 2016-09-29 05:53:49
为了在视图控制器之间导航,可以使用UINavigationController.
我将为您提供一个基本的导航示例,希望它将帮助您使导航工作在您的项目。
结果
ViewController在导航之间将图像传递给DetailViewController:
建立你的观点
首先,确保根控制器嵌入了导航控制器控件,以便您可以使用segues导航:
连接用于导航的视图。
代码
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// showDetail Segue
if segue.identifier == "showDetail" {
// Sending the image to DetailViewController
// Before appears in the screen.
let detailViewController = segue.destination as! DetailViewController
detailViewController.image = sender as? UIImage
}
}
@IBAction func loginButton(_ sender: AnyObject) {
// Go to another view controller
performSegue(withIdentifier: "showDetail", sender: imageView.image)
}
}
class DetailViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var image: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
if let imageSent = image {
imageView.image = imageSent
}
}
}
发布于 2016-09-28 19:26:49
我认为最好不要以编程方式调用控制器的Storyboard ID,而应该使用Segues。您可以了解如何使用它们这里。
但是如果您必须使用SBID,下面是我的一个项目的一个示例片段.
let vc = self.storyboard?.instantiateViewController(withIdentifier: "UpdateFilesViewController")
self.navigationController?.present(vc!, animated: true, completion: nil)
请注意,演示可能是您所追求的解决方案,而不是推送。此外,您似乎正在将UIViewController转换为UICollectionViewController,这可能也会导致问题。请注意,UICollectionViewController是UIViewController的子类,因此转换是不必要的。
发布于 2016-09-28 19:57:57
正如我们在注释中所发现的,您当前的viewController没有navigationController。
这意味着
self.navigationController?.pushViewController(images, animated: true)
什么都不做。您需要使用一个viewController设置初始navigationController,这样才能产生任何效果。
https://stackoverflow.com/questions/39760740
复制