iOS UICollectionView导航

时间:2015-05-14 23:58:47

标签: ios swift uiviewcontroller

我试图弄清楚如何浏览我的应用。但我有点失落。

我有一个UIViewController,它可以加载一些数据,然后在CollectionView中显示数据。然后我有另一个UIViewController用于详细视图。然后我触发一个segue转到它,我传递数据等。

self.performSegueWithIdentifier("detailViewSeque", sender: nil)

但我迷失的部分是回到我的主视图,如果我只是触发另一个segue,那么它会再次加载所有数据/视图。数据已经加载一次,我真的不想继续加载它。

我觉得我做错了,这是处理这种情况的一种非常明显的方法。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

这是使用展开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中创建展开segue。要执行此操作,请从视图控制器中拖动,再到退出,然后选择unwindToHere方法:

enter image description here

第三,你需要提供你的segue和标识符。要做到这一点,选择你的segue(见下文 - 你的segue将不会像正常的segue一样可见);然后使用属性编辑器为您的segue提供标识符。

enter image description here

现在你可以使用你的segue了。在想要转换的视图控制器上,调用:

self.performSegueWithIdentifier("YourID", sender: self)

答案 1 :(得分:1)

重新考虑您的需求"我需要在某个与视图控制器关联的地方保留数据"

这里有几个选项。你的目标基本上是将它存储在一个不会内存不足的地方。 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()