我有一个可以添加和删除项目的 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