Я новичок в кодировании для Mac. Я знаком с UITableView от iOS-кодирования, но не могу заставить NSTableView нормально работать в моем приложении. Да, я просмотрел документацию и учебные пособия, но у меня возникли проблемы с получением нужного результата. Мой желаемый результат должен быть довольно простым и простым, но я стою на TableViews. Мне бы очень хотелось, чтобы он больше походил на работу с UITableView, а не на то, как он, похоже, хочет работать с NSTableView. Я не хочу добавлять или удалять строки. Мне нужен только 1 столбец, и мне бы очень хотелось, чтобы он работал как список кнопок, которые можно нажать, и запустить контент, связанный с этой опцией, на том же экране в следующем NSView.Как получить динамически изменяющийся NSTableView в OSX
(У меня есть 3 вида на одном экране. Первое - это главное меню слева, а при нажатии запускается tableView для отображения подменю. Когда этот параметр выбран, он открывает контент в крайнем правом углу экрана. Мой желаемый результат в любом случае.)
В настоящее время ничего не заполняется таблицей. В настоящее время это выглядит так.
.h
@interface RootViewController : NSViewController <NSTableViewDataSource>{
IBOutlet NSView *mainMenuView;
IBOutlet NSTableView *tableView;
NSMutableArray *options;
}
-(IBAction)mainMenuBtn:(id)sender;
@end
.m
@interface RootViewController()
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
options = [[NSMutableArray alloc] init];
}
return self;
}
-(void)viewDidLoad{
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{
return [options count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
return [[options objectAtIndex:row] valueForKey:[tableColumn identifier]];
}
-(IBAction)mainMenuBtn:(id)sender{
NSLog(@"1");
[options addObject:@"Strain 1"];
NSString *test = [options objectAtIndex:0];
NSLog(test);
[tableView reloadData];
}
В настоящее время я Tableview подключен в СИБ к TableView. Я попытался подключить dataSource к владельцу файла, но это не сработало. Кажется, не может найти места, чтобы подключить его тоже. Любые предложения будут ценны. Спасибо
Ну, я сделал настройки, которые вы предложили. Это первое возвращение было чем-то из учебника, но я заменил его, как вы предложили. Я также добавил [options addObject: @ "Strain 1"]; где MutableArray alloc, так что я могу проверить, что таблица отобразит содержимое. Он работает, но при нажатии кнопки таблица не обновляется, как вы ожидали. Какие-либо предложения? Спасибо – steven
Являются ли четыре первые строки mainMenuBtn рабочими? ... конкретно NSLog (test) ...? – Merlevede
На самом деле я думаю, что понял, что происходит, но не знаю, как это исправить. В numberOfRows я добавил NSLog для отображения count. Когда перезагрузка происходит, она вызывает ее снова, но счет остается на 1. Даже если в mainMenuBtn у меня тот же NSLog (что происходит раньше), и в нем указано, что есть 2. Не совсем уверен, что происходит между ними. – steven