Я добавил NSTableView и правильно установил делегат и источник данных.Как перерисовать NSTableView сразу после reloadData
- (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, как только программа начнет обрабатывать данные, тогда окно не будет отвечать, пока обработка не завершится. –
Спасибо за вашу помощь. Я нашел проблему, обработка блокирует основной поток для обновления пользовательского интерфейса, я перемещаю его в новый поток, и программа работает нормально. –