2015-06-19 32 views
0

我正在使用Swift的Master Detail View Controller。 當我點擊一個主單元格時,我看到一個包含圖片列表的集合視圖。 每張圖片代表存儲在覈心數據內的數據。 每個圖片數據也有一個時間戳,同一天拍攝的所有圖片都存儲在同一個主單元中。如何在另一個UIViewController中編輯UICollectionView項目?

[Date of the day 1] 
    [pic1] 
    [pic2] 

[Date of the day 2] 
    [pic3] 
    [pic4] 

我想達到的目標是: 當我點擊一張圖片,顯示另一視圖控制器(通過賽格瑞)和這個新的VC讓我來編輯圖片並更改其日期。

的事情是我有多個事情發生在這裏,當我更改日期或圖片:

  • 如果PIC獨自收集,然後我也有刪除主日細胞了。
  • 如果圖片不是孤立的,我只需要更新詳細信息收集視圖
  • 在任何情況下,如果我必須創建一個新的日期,我需要創建一個新的主單元並更新視圖,如果我需要刪除一天,我還必須更新主視圖。

如果編輯收集的物品,你可以簡單地做一個:

self.collectionView performBatchUpdates: 

,然後更新模型,並通知你的行動... 收集的看法,但我沒有看到我如何從另一個UIViewController中做到這一點。

目前,在編輯視圖控制器中,我更新模型,然後關閉視圖控制器。我收到崩潰,因爲collectionView試圖顯示一個不再是當前集合的一部分的項目...

要解決此問題,也許我可以使用協議以通知編輯的詳細視圖查看,但如果我這樣做,我需要將編輯單元格的IndexPath賦予編輯視圖,然後通過協議將其返回到詳細視圖...爲什麼不呢。但在我看來並不那麼幹淨。

另一個問題是,當我刪除一天時,該應用似乎也在主視圖中崩潰。因爲,主視圖不知道我從編輯視圖中刪除了一天。

我的主要問題是,我沒有看到如何告訴我的主視圖控制器,我做了一些模型更改...特別是當我沒有從編輯視圖中的任何IndexPath信息。

從技術上講,我可以使用notificationCenter來通知兩個視圖,我猜...但仍然需要將兩個IndexPath從主視圖傳遞到Detail視圖,然後再到Edit視圖。

醜。

回答

0

由此可以實現幾種方法:

1)團:含視圖控制器集合視圖將作爲編輯視圖控制器的一個代表,並且當編輯完成將回調的方法爲「的視圖含集合視圖」

2)通知控制器:EditingFinished

3)塊

+0

的事情是,根據該文件,我需要說什麼indexPath我搬到/刪除到主控的tableview和/或詳細的CollectionView。塊將與將indexPath傳遞給子View(編輯)相同,但可以讓我編寫更少的代碼。我的主要問題是,我應該做self.collectionView performBatchUpdates:之前,甚至觸摸數據..根據蘋果。調用performBatchUpdates來啓動segue是沒有意義的... – Mikael

+0

將代碼分享到git或某處(如果可能的話) –

0

使用協議是很好的解決方案,但可以是痛苦的,因爲你必須管理使用THEI編輯項r indexPaths。更簡單的解決方案,因爲您使用的是CoreData,所以使用計算屬性獲取條目,並從包含collectionView的控制器調用方法viewWillAppear方法。這種方式調用重新加載數據將重新計算核心數據條目,並將每個項目放在正確的位置。此外viewWillAppear將被解僱控制器後站在集合視圖控制器之上被調用

相關問題