将标签的值绑定到NSArray的count属性

时间:2012-01-16 12:47:58

标签: objective-c cocoa binding nsarraycontroller

我想在标签中显示名为pages的NSArray中当前的元素数。按照其他指南,我做了以下几点:

  1. 在IB中创建了一个NSArrayController(名为pagesController)并将其绑定到NSArray页面
  2. 使用Controller Key = arrangeObjects和Model Key Path = @count
  3. 将标签的value属性绑定到NSArrayController

    问题是当程序运行时,标签总是显示“0”。要检查事情是否正常工作,我尝试在用户点击另一个按钮时记录消息(该按钮基本上在pages数组中插入一个新元素):NSLog(@"count = %d", [self.pagesController valueForKeyPath:@"arrangedObjects.@count"]);在这种情况下输出是正确的,即当前打印的数组中的元素数是正确的。 我错在哪里?

1 个答案:

答案 0 :(得分:0)

许多人没有正确使用KVC。只有在重新定义pages属性时才会通知您的阵列控制器,而不是在将对象添加到阵列时。尝试使用相应的更改通知包装代码:

[self willChangeValueForKey:@"pages"];
[pages addObject:someObject];
[self didChangeValueFOrKey:@"pages"];