1

我想用一组 NSStrings 填充 NSPopUpButton。我还希望能够在 NSPopUpButton 中设置所选项目并获取所选值。有没有办法使用绑定来做到这一点?这就是我所拥有的,只有绑定到 arragedObjects 的数组控制器的内容。

@interface AppDelegate : NSObject <NSApplicationDelegate>
{
    NSMutableArray *myArray;
    IBOutlet NSPopUpButton *myPopUpButton;
    IBOutlet NSArrayController *processArrayController;   
}

@property (assign) IBOutlet NSWindow *window;
@end

@implementation AppDelegate
@synthesize window = _window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
     NSString *firstObject = @"Lustre";
     NSString *secondObject = @"TwoTone Laser";
     NSString *thirdObject = @"Laser Mark";
     NSString *forthObject = @"Double Lustre";
     NSString *fifthObject = @"CG Ink";

    // Create the array
     myArray = [[NSMutableArray alloc] initWithObjects:firstObject, secondObject,  
     thirdObject, forthObject, fifthObject, nil];

    // Sort the array
    [myArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

    // Set contents of the array controller that is bound to the popup button
    [processArrayController setContent:myArray];

    // Set a selection to an item of the popup button
    [myPopUpButton  selectItemWithTitle: firstObject];  
}
@end
4

1 回答 1

0

在您的应用程序控制器中设置一个 ivar 来保存您的选择:

@property (copy) NSString *selection;

当然,在你的实现文件中综合它。

将这些绑定到您的 NSPopUpButton 实例:

内容:

绑定到:阵列控制器(除非您为阵列控制器指定了另一个名称)

控制器键:排列对象

内容值:

绑定到:阵列控制器(除非您为阵列控制器指定了另一个名称)

控制器键:排列对象

模型键路径:(对于字符串,我一直使用“描述”)

选定对象:

绑定到:App Delegate(除非您为您的应用程序委托指定了另一个名称)

模型键路径:self.selection

最后,由于您的弹出按钮现在绑定到selection,这就是您设置初始选择的方式:

self.selection = firstObject;

祝你在你的努力中好运。

于 2012-11-29T19:28:23.797 回答