iOS UICollectionView 导航
iOS UICollectionView navigation
我正在尝试了解如何在我的应用程序中导航。但是我有点迷路了。
我有一个加载一些数据的 UIViewController,然后在 CollectionView 中显示数据。然后我有另一个 UIViewController 用于详细视图。然后我触发一个 segue 去它,我传递数据等
self.performSegueWithIdentifier("detailViewSeque", sender: nil)
但我迷失的部分是回到我的主视图,如果我只是触发另一个 segue,它会再次加载所有数据/视图。数据已经加载过一次了,实在不想再继续加载了。
我觉得我做错了,有一些非常明显的方法来处理这种情况。
有人能给我指出正确的方向吗?
这是使用 unwind segue 的好情况(更多信息:What are Unwind segues for and how do you use them?)。以下是设置方法:
首先,在要将 转换为 的视图控制器中创建一个 @IBAction
,它将 UIStoryboardSegue
作为其唯一参数。例如:
@IBAction func unwindToHere(segue: UIStoryboardSegue) {
// If you need you have access to the previous view controller
// through the segue object.
}
其次,您需要在 IB 中创建展开转场。要从视图控制器执行此操作,请按住 从 到 Exit 和 select unwindToHere
方法:
第三,你需要提供你的segue和标识符。为此 select 你的转场(见下文 - 你的转场不会像普通转场那样可见);然后使用属性编辑器给你的 segue 一个标识符。
现在你可以使用你的segue了。在您要从中继续的视图控制器上,调用:
self.performSegueWithIdentifier("YourID", sender: self)
重新表述您的需求"I have data that I need to keep around somewhere that isn't associated with a view controller"。
这里有几个选项。您的目标基本上是将其存储在不会内存不足的地方。
AppDelegate
经常用于此目的,但 Singleton 变量也适用。
我会亲自创建一个单例,比如 CatPictureRetriever
和
private let _CatPictureRetriever SharedInstance = CatPictureRetriever()
class CatPictureRetriever {
static let sharedInstance = CatPictureRetriever()
var catPictures : NSArray?;
func gimmeCatPictures -> NSArray? {
return catPictures
}
}
现在您可以在任何地方通过 CatPictureRetriever 获取照片
var pictures = CatPictureRetriever.sharedInstance.gimmeCatPictures()
我正在尝试了解如何在我的应用程序中导航。但是我有点迷路了。
我有一个加载一些数据的 UIViewController,然后在 CollectionView 中显示数据。然后我有另一个 UIViewController 用于详细视图。然后我触发一个 segue 去它,我传递数据等
self.performSegueWithIdentifier("detailViewSeque", sender: nil)
但我迷失的部分是回到我的主视图,如果我只是触发另一个 segue,它会再次加载所有数据/视图。数据已经加载过一次了,实在不想再继续加载了。
我觉得我做错了,有一些非常明显的方法来处理这种情况。
有人能给我指出正确的方向吗?
这是使用 unwind segue 的好情况(更多信息:What are Unwind segues for and how do you use them?)。以下是设置方法:
首先,在要将 转换为 的视图控制器中创建一个 @IBAction
,它将 UIStoryboardSegue
作为其唯一参数。例如:
@IBAction func unwindToHere(segue: UIStoryboardSegue) {
// If you need you have access to the previous view controller
// through the segue object.
}
其次,您需要在 IB 中创建展开转场。要从视图控制器执行此操作,请按住 从 到 Exit 和 select unwindToHere
方法:
第三,你需要提供你的segue和标识符。为此 select 你的转场(见下文 - 你的转场不会像普通转场那样可见);然后使用属性编辑器给你的 segue 一个标识符。
现在你可以使用你的segue了。在您要从中继续的视图控制器上,调用:
self.performSegueWithIdentifier("YourID", sender: self)
重新表述您的需求"I have data that I need to keep around somewhere that isn't associated with a view controller"。
这里有几个选项。您的目标基本上是将其存储在不会内存不足的地方。
AppDelegate
经常用于此目的,但 Singleton 变量也适用。
我会亲自创建一个单例,比如 CatPictureRetriever
和
private let _CatPictureRetriever SharedInstance = CatPictureRetriever()
class CatPictureRetriever {
static let sharedInstance = CatPictureRetriever()
var catPictures : NSArray?;
func gimmeCatPictures -> NSArray? {
return catPictures
}
}
现在您可以在任何地方通过 CatPictureRetriever 获取照片
var pictures = CatPictureRetriever.sharedInstance.gimmeCatPictures()