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()