如何通过xib将NSMutableArray绑定到ArrayController

时间:2013-08-27 05:04:19

标签: objective-c cocoa cocoa-bindings

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

[_arrController bind:@"contentArray" toObject:self withKeyPath:@"dataArray" options:nil];

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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

    @interface ExAppDelegate:NSObject

         

    @property(assign)IBOutlet NSWindow * window;

         

    @property(strong)NSMutableArray * demoArray;

         

    @property(强)IBOutlet NSArrayController * demoArrayController;

         

    @end

    以下是同一类

    的实现
    @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
    

    现在,UI绑定 - &gt;

    1. 阵列控制器绑定,如下图所示
    2. enter image description here

      1. 表视图列绑定。
      2. enter image description here

        注意:

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

        [self.demoArrayController rearrangeObjects];

        2。在表视图列绑定中,请确保已选中“连续更新值”复选框。

        我希望能解决这个问题。

答案 1 :(得分:1)

步骤如下(以防万一你错过了):

  • 添加阵列控制器
  • 将阵列控制器的Mode设置为Class并添加Class name。
  • 添加您要绑定的密钥

如果您正在使用基于视图的表格视图。请执行以下操作:

  • 点击表格视图中的列(通常需要点击三次 表格视图)
  • 检查Bindings Inspector中的值
  • 控制器密钥:ArrangedObjects和您的模型密钥路径。
  • 在表格视图单元格中标记您的静态文字。
  • 将静态文本绑定到表格单元格视图和模型密钥路径。

希望它有所帮助!