将NSPopUpButton绑定到NSArray

时间:2012-11-28 15:59:02

标签: binding nsarray nsarraycontroller nspopupbutton

我想使用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

1 个答案:

答案 0 :(得分:0)

在应用程序控制器中设置ivar以保留您的选择:

@property (copy) NSString *selection;

当然,请在您的实施文件中进行综合。

将这些绑定设置为NSPopUpButton实例:

内容:

绑定到:阵列控制器(除非你给你的阵列控制器另一个名字)

Controller Key:arrangeObjects

内容值:

绑定到:阵列控制器(除非你给你的阵列控制器另一个名字)

Controller Key:arrangeObjects

模型关键路径:(对于字符串,我总是使用'​​描述')

所选对象:

Bind To:App Delegate(除非您已向应用程序委托另一个名称)

模型关键路径:self.selection

最后,由于您的弹出按钮现在已绑定到selection,因此您可以设置初始选择:

self.selection = firstObject;

祝你工作顺利。