我有一個基於視圖的NSTableView
,我用一個「NSMutableArray」支持。我定期出去抓取一些數據,並希望將新行插入頂部的表中。基於視圖的NSTableView在用動畫插入新行後呈現空白行
當我這樣做沒有指定動畫到insertRowsAtIndexes:withAnimation:
它似乎很好地工作了幾個小時。但是,如果我指定了動畫,大約7或8次插入後,表視圖開始顯示出現插入的空白行。向下滾動然後備份會導致新行正確呈現。
調用insertRowsAtIndexes:withAnimation
的代碼位於一個塊中,並且不在主線程上運行,但是我的插入發生在主隊列的dispatch_async中,所以我不認爲它與多線程相關。
這是一些代碼... self.contents
是我的NSMutableArray
。
dispatch_async(dispatch_get_main_queue(), ^{
[self.contentsTableView beginUpdates];
if(posts.count) {
for(NSDictionary* dictionary in [posts reverseObjectEnumerator]) {
FNPost* post = [[FNPost alloc] initWithDictionary:dictionary width:self.contentsTableView.frame.size.width];
post.delegate = self;
[self.contents insertObject:post atIndex:0];
[self.contentsTableView insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:0] withAnimation: NSTableViewAnimationSlideLeft];
}
}
[self.contentsTableView endUpdates];
});
有一件事我感到困惑的是蘋果NSTableView
文件爲insertRowsAtIndexes:withAnimation
的一部分,上面寫着:
表視圖的numberOfRows會自動 索引的數量減少。
我用什麼語句意味着有關對象的數量之間在我的陣列和表視圖認爲它有行數的關係(以及因此numberOfRowsInTableView:
結果)混淆。我認爲表格視圖中的行數應該等於我的數組數量,我想確保我對這個問題的理解不在問題的根源上,但正如我所說,如果沒有指定動畫,表格工作正常。
我在做什麼明顯錯誤嗎?
我試圖複製你的問題,但不能使用一個字典數組來代替帖子。一切正常。所以,也許它有一些特定的事情是做什麼職位。我同意蘋果的文檔,他們沒有任何意義,如果你記錄numberOfRows它隨着支持數組增加,如你所期望的。 – rdelmar 2012-08-16 04:06:23
我與NSTableView在層次結構層次結構中相關。我在下面回答了我自己的問題。感謝您花時間研究它。 – 2012-08-18 22:55:10