2017-01-03 27 views
0

我找到了一個新的View Controller。該視圖控制器包含來自相應的CollectionViewCell的數組數據。如何更改數據以顯示前一個單元格數組?不必回到最後一個視圖控制器並從那裏選擇單元格?我正在使用Swift 3以下是解釋我的意思的圖像在ViewController中查找indexPath

第一個圖像位於第一個視圖控制器中。第二張和第三張圖片是在列表中的前兩張中的任何一張被點擊時顯示的內容。您可以使用第二個視圖控制器中的箭頭鍵轉到下一個索引。我如何實現這一功能?

let dataSource = DataSource() 

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
return 1 
} 

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    if inSearchMode { 
     return filteredAnimal.count 
    } 

    return dataSource.anim.filter{ $0.isDefault! }.count 
} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AnimIndex", for: indexPath as IndexPath) as! AnimIndex 


    let animal: Animal 

    if inSearchMode { 
     animal = filteredAnimal[indexPath.row] 
    } else { 
     animal = dataSource.anim.filter{ $0.isDefault! }[indexPath.row] 
    } 

    cell.configureCell(animal) 

    return cell 
} 
+0

正如我可以從你的問題理解你想刷新在以前的viewcontroller數據。以下幾種方法可以做到這一點 1.從當前視圖控制器創建委託和呼叫。 2.將當前視圖控制器的通知發佈到前一個視圖控制器。 –

+0

根據我的理解,我認爲您需要將所有collectionview單元格數據傳遞到下一個視圖控制器,以便您現在具有所有數據,因此您需要選擇 下一個或上一個索引數據。 –

+0

更新了帖子,提供更多信息 – user4938361

回答

1

這是一個非常普遍的UI模式。你應該搜索主/細節。您應該能夠找到許多提供此UI模式示例的示例項目。

不要用細胞來思考。根據模型對象來考慮 - 爲您的應用程序數據提供商店。您需要一個模型對象來表示您在第一個視圖控制器中呈現的所有數據列表。

該模型對象應該可以從所有需要顯示信息的視圖控制器訪問。您可以傳遞對模型對象的引用,也可以將其設置爲單例。這兩種方法都有其優點。

對於按部分和行組織的集合視圖和表視圖,數組對象的數組通常是模型的良好結構。如果你的數據在一個單獨的部分,那麼你可以使用一個單一的數組。

當用戶點擊第一個視圖控制器中的一個單元格時,您將調用第二個視圖控制器(從segue或通過手動調用它)。您會將第二個視圖控制器傳遞給所選對象的indexPath ,並且還可能傳遞給您的模型對象的引用(或者像我所說的,您可以使模型對象成爲全局可訪問的單例,在這種情況下,您不需要傳遞它。)

然後,在第二個(或第三個)視圖控制器,如果用戶點擊向上/向下按鈕,則可以訪問存儲應用程序呈現的所有數據的模型對象,因此您可以從任何視圖控制器中導航到下一個對象。如果您的數據按行和列以及行或列組織起來,您可能需要將下一個/前一個項目方法添加到您的數據模型中,因此您只需編寫一次該邏輯即可。

+0

好吧,我理解你的意思。我確實已經建立了模型。問題是我只是不知道如何從新的ViewController中改變視圖。我能做到這一點的唯一方法是回到上一個,然後點擊新的單元格。我想實現像viewcontroller的箭頭一樣的東西 – user4938361

+0

寫你的第二個視圖控制器有一個'displayDataForIndexPath'方法。讓該方法從該數據模型中爲該indexPath獲取所有數據,並將其安裝到視圖控制器的字段中。讓你的視圖控制器的viewWillAppear方法調用'displayDataForIndexPath'方法。然後,當用戶點擊下一個或上一個按鈕時,計算下一個indexPath值,並用新的indexPath值調用「displayDataForIndexPath」。 –

+0

對不起,但它正好是最後一部分**然後,當用戶點擊下一個或上一個按鈕時,計算下一個indexPath值並用新的indexPath值調用displayDataForIndexPath。**就在這裏,我不'不知道如何實現。在問題中,我問如何找到indexPath值。 – user4938361

相關問題