2016-12-03 4 views
-2

으로보기 컨트롤러를 사용하는 NSTableView이 있습니다. 테이블과 데이터의로드가 잘되는 경우도 있지만 빈번한 경우도 있고 데이터 소스 메서드가 호출되지 않는 경우도 있습니다. 왜이 임의의 동작이며, 어떻게이 문제를 해결할 수 있습니까?로드시 NSTableView가 무작위로 비움

+0

언제 reloadData를 tableview에서 호출합니까? 어쩌면 일찍 그리고 데이터 소스가 아직 채워지지 않았습니까? – Volker

+0

Woah, woah, downvotes는 무엇입니까? 나는 단지 비슷한 버그를 겪고있는 누군가 (분명히 버그 다. 이렇게 작동해서는 안 됨)가 상대적으로 작은 좌절감으로 앱을 고칠 수 있기를 바라는 내 질문에 대답했다. – ThatsJustCheesy

+0

@Volker : 감사합니다. 이 시점까지는 다른 모든 테이블 뷰가 수동으로 개입하지 않아도 자동으로로드되기 때문에 실제로'-reloadData'를 호출하지 않았습니다. 그러나이 경우는 달랐다. 나는 대답을 업데이트했다. – ThatsJustCheesy

답변

-2

분명히, 나는 NSTableView의 문서를 문서에 매우 중요한 단락을 놓친 :

중요

그것은 테이블 뷰를 채우기위한 데이터 소스 방법은 이전에 호출 될 수 있다는 가능성 awakeFromNib은 데이터 소스가 Interface Builder에서 지정되면 호출됩니다. 데이터 소스가 아직 구성되지 않은 경우 데이터 소스의 numberOfRowsInTableView : 메소드가 행 수를 0으로 반환하도록하여이를 막아야합니다. awakeFromNib에서 데이터 소스가 초기화 될 때 항상 테이블 뷰에서 reloadData를 호출해야합니다.

는 지금, 나는 (내가 -viewDidLoad에서 할) -awakeFromNib에 초기화하지 않는,하지만 그럼에도 불구하고 당신이 항상 당신의 데이터 소스있어 테이블 뷰에 -reloadData를 호출 할 필요가 있다고 말한다.

이 오류가 너무 쉽게 발생할 수 있습니다. 종종 테이블보기는 추가 reload 호출이 필요없이 데이터를 자동으로로드합니다. 그러나 드문 경우이지만 이런 일이 일어나지 않을 수도 있습니다.

그래서이 문제를 방지하기 위해 : 는 항상 초기화 후 -in -viewDidLoad, -awakeFromNib, 또는 다른 적절한 방법에 대한 데이터 소스있어 테이블 뷰에 -reloadData를 호출합니다.