如何通过xib将NSMutableArray绑定到ArrayController

Raj*_*Raj 2 cocoa objective-c cocoa-bindings

我是Cocoa的新手.我正在显示一个简单的Tableview,其中填充了NSMutableArray,它绑定到NSArrayController,如下所示

[_arrController bind:@"contentArray" toObject:self withKeyPath:@"dataArray" options:nil];
Run Code Online (Sandbox Code Playgroud)

这里_arrController是我的NSArrayController的IBoutlet,dataArray是带有数据的NSmutableArray.

当我以编程方式进行绑定时,我成功地填充了Tableview.但是我无法通过Interface Builder实现相同的绑定.

我选择了我的IB中的ArrayController,转到绑定部分,并通过选择模型键路径作为dataArray.But尝试在控制器部分下进行绑定.但是,我的表没有填充数据,其中以编程方式我可以轻松地完成我的任务.任何帮助表示赞赏.

小智 6

这是一个可以帮助您解决问题的示例.

  1. iVar - > demoArray
  2. IBOutlet - > demoArrayController

@interface ExAppDelegate:NSObject

@property(assign)IBOutlet NSWindow*窗口;

@property(强)NSMutableArray*demoArray;

@property(强)IBOutlet NSArrayController*demoArrayController;

@结束

下面是同一个类的实现

@implementation ExAppDelegate
@synthesize demoArray;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    self.demoArray = [NSMutableArray array];
    for (int i=0 ; i <= 10 ; i++)
    {
        NSMutableDictionary *temp = [NSMutableDictionary dictionary];
        [temp setObject:[NSNumber numberWithInt:i] forKey:@"number"];
        [temp setObject:[NSString stringWithFormat:@"Demo %d",i] forKey:@"demoKey"];
        [self.demoArray addObject:temp];        
    }
    [self.demoArrayController rearrangeObjects];
}

@end
Run Code Online (Sandbox Code Playgroud)

现在,UI绑定 - >

  1. 阵列控制器绑定如下图所示

在此输入图像描述

  1. 表视图列绑定.

在此输入图像描述

注意:

1.将对象添加到绑定到Array Controller的数组后,确保在Array Controller上调用rearrangeObjects.

[self.demoArrayController rearrangeObjects];

2.在表视图列绑定中,确保已选中"连续更新值"复选框.

我希望这可以解决这个问题.