![](/img/trans.png)
[英]the programmatic equivalent of binding an nsarraycontroller to a nsobjectcontroller, selection, content
[英]NSObjectController confusion binding to a class property. Help!
我在教自己可可,大部分时间都在享受这种体验。 我一整天都在努力解决谷歌让我失望的一个简单问题。 我已经阅读了Cocoa Bindings Program Topics并认为我理解它但仍然无法解决我的问题。
我有一个非常简单的类MTSong,它有各种属性。 我使用@synthesize来创建getter / setter,并且可以使用KVC来更改属性。 即在我的app控制器中,以下工作:
mySong = [[MTSong alloc]init];
[mySong setValue:@"2" forKey:@"version"];
如果我在我的类代码中做点什么,MTSong.h是:
#import <Foundation/Foundation.h>
@interface MTSong : NSObject {
NSNumber *version;
NSString *name;
}
@property(readwrite, assign) NSNumber *version;
@property(readwrite, assign) NSString *name;
@end
和MTSong.m是:
#import "MTSong.h"
@implementation MTSong
- (id)init
{
[super init];
return self;
}
- (void)dealloc
{
[super dealloc];
}
@synthesize version;
@synthesize name;
@end
在Interface Builder中,每当我使用KVC更改歌曲的版本时,我都会有一个标签(NSTextField)。 我做以下事情:
将NSObjectController对象拖到doc窗口和我设置的Inspector-> Attributes中:
转到Inspector-> Bindings-> Controller Content
选择标签的单元格并转到Inspector
我试图将第2步中的模型键路径更改为“mySong”,这更有意义,但编译器会抱怨。 任何建议将不胜感激。
斯科特
更新帖子评论
我没有公开mySong属性,所以将我的AppController.h更改为:
#import <Cocoa/Cocoa.h>
@class MTSong;
@interface AppController : NSObject {
IBOutlet NSButton *start;
IBOutlet NSTextField *tf;
MTSong *mySong;
}
-(IBAction)convertFile:(id)sender;
@end
我怀疑File的所有者是错的,因为我没有使用基于文档的应用程序,我需要绑定到AppController,所以第2步现在是:
我需要改变3.到
所有编译并且玩得很好!
您希望按照建议将控制器的内容绑定到mySong密钥路径。 您可能没有做的是将mySong作为属性或实例方法暴露在文件所有者(通常是您的应用程序委托)中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.