我認爲你做錯了使用只需要在此基礎上按鈕被點擊重新加載集合視圖採取布爾 isBookMarkCliked:BOOL
爲更好可讀性創建模型書 像
class Book {
var title: String
var author: String
var isBookMarked:Bool
init(title: String, author: String, isBookMarked:Bool) {
self.title = title
self.author = author
self.isBookMarked = isBookMarked
}
}
,並聲明兩個陣列與全球Book模型
arrForBooks:[Book] = []
arrForBookMarkedBooks:[Book] = []
使用延長
extension YourClassVC: UICollectionViewDataSource,UICollectionViewDelegate
{
//MARK: UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
if isBookMarkClicked
{
return arrForBookMarkedBooks.count
}
return arrForBooks.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CellIdentifier", for: indexPath) as! YourCellClass
var currentBook:Book = nil
if isBookMarkClicked
currentBook = arrForStoreDetails[indexPath.row]
else
currentBook = arrForBookMarkedBooks[indexPath.row]
//Set data to cell from currentBook
return cell
}
//MARK: UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.deselectItem(at: indexPath, animated: false)
//Your code to push BookDetailVC
}
}
是的,他們是相同的創建CollectionViewDelegate方法。但我想單獨顯示他們的VC。所以我嘗試從bookvc繼承bookmarkvc,併爲數據源過濾只有書籤的對象。 – noob
你不需要子類,這取決於你如何聲明你的接口,例如,如果你用這個BooksVC創建一個新的故事板,那麼你可以通過編程方式實例化它並隨時顯示它,並在代碼中使用標誌或某物來設置代表。請參閱附件中的代碼。 – Pochi
@noob它不是很好,爲相同的數據分離vc,我已經發布解決方案創建模型的書,你可以很容易地識別哪本書是bookMarked –