0

탭바 디자인이 포함 된 macOS 응용 프로그램이 있습니다 (예 : Tweetbot). 4 개의보기 컨트롤러에 연결된 4 개의 탭이 있습니다. 초기보기 컨트롤러 (하나보기)에는 가로 방향으로 3 개의 셀을 표시하는 NSCollectionView이 포함되어 있습니다.보기 변경시 NSCollectionView 셀 순서 변경

다른보기 컨트롤러로 전환 한 다음 초기보기 컨트롤러로 돌아 오면 아무 이유없이 컬렉션보기의 순서가 변경됩니다. 데이터 소스 (어떤 NSMutableArray)에 대한 변경 작업을 수행하지 않고 어떤 셀도 추가/삭제하지 않으며 reloadData을 호출하지도 않습니다. 콜렉션 뷰 셀의 순서가 계속 변경되는 이유를 이해할 수 없습니다.

일부 테스트를 수행했으며 데이터 원본의 데이터 순서가 전혀 변경되지 않았 음을 확인할 수 있습니다. 따라서 콜렉션 뷰에는 셀의 순서를 변경하는 것이 중요하지 않습니다.

또 다른 이상한 문제는 컬렉션보기를 2 셀로 제한하면이 문제가 발생하지 않는다는 것입니다. 이 문제는 백그라운드에서 실행되는 NSCollectionView 캐싱 방법과 관련이 있는지 궁금하게 생각합니까? 아마도 콜렉션 뷰가 셀을 재활용 할 때 잘못된 데이터를 사용합니까 ??

많은 솔루션을 시도했지만 아무 것도 작동하지 않습니다. 아무도 내가 무엇을 테스트/시도 할 수 있는지에 대한 아이디어가 있습니까? 이 (UITableView 달리) 여러 열을 지원하기 때문에

대체 생각

내가 대신 NSTableView을 사용할 수 있습니다. 그래서 나는 3 열로 NSTableView을 만들 수 있습니다. 이 접근 방식이 더 좋은 성능을 발휘할 수 있습니까? NSCollectionView (특히 많은 셀을 추가하고 싶다면?)보다.

시간 내 주셔서 감사합니다.

+0

"itemForRepresentedObjectAt"에 대한 코드를 표시 – brianLikeApple

답변

0

콜렉션보기에 무엇이 잘못되었는지 알 수 없습니다. 그래서 나는 콜렉션 뷰 행 대신에 복수 열로 NSTableView을 사용했다. 각 열을 하나의 행 (인덱스 0)으로 설정하여 테이블 뷰를 내가 작업했던 컬렉션 뷰와 정확하게 일치하게 만듭니다.

성능이 현명한 테이블 뷰는 훨씬 더 좋은 것처럼 보입니다. 수백 개의 열이 있더라도 스크롤링/상호 작용할 때 여전히 멋지고 매끄 럽습니다.

+2

NSCollection을 잘못 사용했을 가능성이 높습니다. 그것은 그렇게해서는 안됩니다. 그래서 내가 여러분이 데이터를 어떻게 표현하는지 코드를 묻는 것입니다. 그것은 당신이 무엇을하고 싶은가에 달려 있지만 콜렉션 뷰는 창 크기를 조정할 때 분명히 더 나은 대화식 뷰를 가지고 있습니다. iBooks 응용 프로그램을 확인하십시오. NSCollectionView를 사용하고 있습니다. NSTableView는 더 나은 성능을 가지고 있지만 그리드보기에서만 사용합니다. – brianLikeApple