我已經添加了NSTableView並正確設置了委託和數據源。如何在reloadData後立即重新繪製NSTableView
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
_items = [[NSMutableArray alloc] init];
[_items addObject:@"ready"];
[self.mainTableView reloadData];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [self.items count];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTableCellView *result = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
result.textField.stringValue = [self.items objectAtIndex:row];
return result;
}
還有用下面的代碼連接的NSButton:
- (IBAction)buttonPressed:(id)sender {
for (int i = 1; i <= 10; i++) {
NSString *item = [NSString stringWithFormat:@"%d", i];
[_items replaceObjectAtIndex:0 withObject:item];
[self.mainTableView reloadData];
[NSThread sleepForTimeInterval:0.2f];
}
}
程序正確運行並顯示在表視圖「準備就緒」,但是當我點擊該按鈕時,的內容表格視圖沒有立即改變。它改變了2秒後,只顯示最後一個數字 - 10.
我想要的是將NSTableViw的內容從1更改爲10,但不直接得到最終的數字。如何在reloadData之後立即重新繪製它?
我試過你的方法,我想要的是處理一些數據,NSTableView可以顯示處理的進度。如果我使用NSTimer,一旦程序開始處理數據,那麼窗口沒有響應,直到處理完成。 – 2012-02-22 06:33:30
感謝您的幫助,我發現問題,處理阻塞主線程來更新用戶界面,我將它移動到一個新的線程和程序工作正常。 – 2012-02-22 14:15:35