详细应用:绑定困难
我正在Cocoa编写我的第一个主细节视图。 我的数据模型非常简单:只是一个NSMutableArray,其中包含具有几个NSString属性的单个类的实例。
以下是我迄今为止创建的内容:
但是,这个设计有两个问题:
(1)我找不到实现“+”和“ - ”按钮的好方法。 首先,我将它们绑定到数组控制器的add:和remove:属性。 虽然这似乎工作,但它有一个问题:我的类声明一个初始化NSStrings为存根值的init成员,但数组控制器似乎没有[init]新实例,因为新的列表条目有空字符串每列。
接下来,我将它们附加到我的应用程序委托中的IBActions中,该应用程序委托从NSMutableArray添加或删除了一个对象。 但是,这感觉不对 - 感觉就像我违反了模型 - 视图 - 控制器体系结构,而不是与阵列控制器交谈。 例如,“ - ”功能必须与阵列控制器通信以获取选定的项目。 另外,我注意到在更改数组后,我必须发送一个[didChangeValueForKey]消息 - 这感觉就像一个信号,表明我做错了。
(2)在我看来,其中一个细节子视图是绑定到所选对象中的NSString的NSTextView。 它确实无法按预期工作:输入新文本时,即使选择了其他类别的成员(应具有不同的值),文本仍保持不变。 此外,文本数据不会被保存到类的任何实例。
有什么想法吗? 提前致谢。
这是一个应该接近你想要的例子:
#import "AppDelegate.h"
#import "Members.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.theData = [NSMutableArray arrayWithObject:[[Members alloc] init]];
}
-(IBAction)addMember:(id)sender {
[self.controller addObject:[[Members alloc] init]];
}
-(IBAction)removeMember:(id)sender {
[self.controller removeObjectAtArrangedObjectIndex:self.controller.selectionIndex];
}
数组控制器(其IBOutlet是控制器)将其内容数组绑定到data。 成员是我的班级的名称,有3个字符串属性,名称,作者和blurb。 在详细视图中,2个文本字段绑定到ArrayController.selection.name或作者,就像你说的那样。 另一个属性blurb以同样的方式绑定(ArrayController.selection.blurb),但绑定到文本视图的Attributed String值。 这工作得很好,我不确定你的文本视图的麻烦是什么。 如果我将文本添加到文本视图中,如果我在母表中单击另一行然后单击后(如果我登录数组,它也会显示在那里),它会显示在那里。
链接地址: http://www.djcxy.com/p/85273.html