0

項目を追加および削除できる 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
4

1 に答える 1

1

あなたの配列にはあなたのクラスのインスタンスがあり、あなたの addItemsWithTiles: メソッドでは、それらのインスタンスのいくつかの文字列プロパティではなく、それらのインスタンスを追加しています。[_array valueForKey:@"whateverKeyHasYourStrings"] を addItemsWithTitles: の引数として _array だけでなく使用すると、問題なく動作すると思います。

于 2012-08-20T01:05:45.937 に答える