0

我有一個包含標籤欄設計(即:Tweetbot)的macOS應用程序。有4個選項卡鏈接到4個不同的視圖控制器。初始視圖控制器(視圖1)包含一個NSCollectionView,它可以水平顯示3個單元格。NSCollectionView細胞訂單更改視圖更改

這一切工作正常,但是當我切換到另一個視圖控制器,然後回到初始視圖控制器時,集合視圖的順序無緣無故改變。我沒有對數據源進行任何更改(這是一個NSMutableArray),我不添加/刪除任何單元格,也不打電話給reloadData。我不明白爲什麼集合視圖單元格的順序不斷變化。

我已經做了一些測試,可以確認我的數據源中的數據順序不會改變。因此,對於集合視圖來說,改變單元格的順序是沒有意義的。

我注意到的另一個奇怪的問題是,如果我將收集視圖限制爲2個單元格,則不會發生此問題。這讓我懷疑這個問題是否屬於後臺運行的某種NSCollectionView緩存方法?也許當收集視圖回收一個單元格時,它使用不正確的數據?

我已經嘗試了很多不同的解決方案,似乎沒有任何工作。有沒有人有任何想法,我可以測試/試用,爲了找出什麼是錯的?

另類想法

我可以使用,而不是NSTableView,因爲它支持多列(不像UITableView)。所以我可以製作一個帶3列的NSTableView。這種方法會不會比NSCollectionView更糟糕(特別是如果我想添加大量單元?)。

謝謝你的時間,丹。

+0

顯示「itemForRepresentedObjectAt」的代碼 – brianLikeApple

回答

0

我無法找出收集視圖出了什麼問題。所以我最終使用了具有多列的NSTableView(而不是集合視圖行)。我將每列設置爲一行(索引0),這使得表視圖看起來與我正在使用的集合視圖完全一樣。

性能明智的表格視圖似乎也好很多。即使有數百列,滾動/交互時仍然很好,很流暢。

+2

我敢打賭,您錯誤地使用了NSCollection。它不應該是這樣,這就是爲什麼我要求代碼如何呈現數據。這取決於你想要做什麼,但是在調整窗口大小時,集合視圖顯然具有更好的交互視圖。檢查iBooks應用程序,它使用NSCollectionView。 NSTableView具有更好的性能,但我只將它用於網格視圖。 – brianLikeApple