我有一個陣列陣列
var firstpage = [ Food(name: "rice", image: "rice"),
Food(name: "fish", image: "fish"),
Food(name: "pasta", image: "pasta"),
Food(name: "burger", image: "burger") ]
var secondpage = [ Food(name: "Apple", image: "Apple"),
Food(name: "Orange", image: "Orange")]
var thirdpage = [
Food(name: "ice cream", image: "iceCream"),
Food(name: "Waffel", image: "Waffel")]
lazy var cards = [firstpage, secondpage, thirdpage]
我用相同的代碼在不同的視圖控制器中顯示每一個
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return firstpage.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as! CardCVCell
cell.foodName.text = self.firstpage[indexPath.row].name
cell.foodImage.image = UIImage(named: self.firstpage[indexPath.row].image)!
return cell
}
所以我想重構代碼并提高效率,并制作一個帶有按鈕的視圖控制器,所以當他單擊按鈕時,只有資料源發生變化,首先我創建了一個名為的變數currentShowingCollectionViewIndex,當用戶單擊按鈕更改索引時它會更新陣列示例:第一次進入頁面 currentShowingCollectionViewIndex = 0 因此當用戶再次單擊按鈕時它將顯示“第一頁”,它將更新為 1 并顯示“第二頁”
@IBAction func pageNextButton(_ sender: UIButton!) {
currentShowingCollectionViewIndex = 1
if currentShowingCollectionViewIndex == 1 {
foodArray = cards[1] //foodArray is only an empty array that I cope to it.
}
if currentShowingCollectionViewIndex == 2 {
foodArray = cards[2]
}
}
但是代碼不起作用并且資料沒有改變(注意:我試圖列印currentShowingCollectionViewIndex值并且它正在更新)但我現在不知道為什么資料沒有改變?請任何幫助
感謝您的時間!
uj5u.com熱心網友回復:
您應該在設定新資料后重新加載 collectionView。
@IBAction func pageNextButton(_ sender: UIButton!) {
currentShowingCollectionViewIndex = 1
if currentShowingCollectionViewIndex == 1 {
foodArray = cards[1] //foodArray is only an empty array that I cope to it.
self.collectionView.reloadData()
}
if currentShowingCollectionViewIndex == 2 {
foodArray = cards[2]
self.collectionView.reloadData()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440609.html
標籤:IOS 迅速 uicollectionview uikit 数据源
上一篇:當編碼資料沒有變異函式時,編碼資料如何最終進入編碼器?
下一篇:UITextField:前導截斷
