項目を追加および削除できる NSTableView があります。アイテムがテーブルに追加されたら、それらのアイテムを NSPopUpButton のアイテムとしても表示したいと思います。addItemsWithTitles: メソッドを試しましたが、エラーが発生します。
#import "TableController.h"
#import "Favorites.h"
@interface TableController ()
@property NSMutableArray *array;
@property (weak) IBOutlet NSTableView *tableView;
@property (weak) IBOutlet NSPopUpButton *popButton;
@end
@implementation TableController
- (id)init {
self = [super init];
if (self) {
_array = [[NSMutableArray alloc] init];
}
return self;
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [_array count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
Favorites *fav = [_array objectAtIndex:row];
NSString *ident = [tableColumn identifier];
return [fav valueForKey:ident];
}
- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
Favorites *fav = [_array objectAtIndex:row];
NSString *ident = [tableColumn identifier];
[fav setValue:object forKey:ident];
}
- (IBAction)add:(id)sender {
[_array addObject:[[Favorites alloc] init]];
[_tableView reloadData];
[_popButton addItemsWithTitles:_array];
}
-(IBAction)delete:(id)sender {
NSInteger row = [_tableView selectedRow];
[_tableView abortEditing];
if (row != -1) {
[_array removeObjectAtIndex:row];
}
[_tableView reloadData];
}
@end
そのため、配列の objectAtIndex:0 をログに記録しようとしましたが、文字列は取得されませんでしたが、代わりにいくつかの数値が取得されました。
Array string is <Favorites: 0x10013e820>
また、参考までに、私のお気に入りのクラスは
#import "Favorites.h"
@interface Favorites ()
@property (copy) NSString *location;
@end
@implementation Favorites
- (id)init {
self = [super init];
if (self) {
_location = @"City, State or ZIP";
}
return self;
}
@end