我正在我的示例应用程序中执行以下操作:
我创建了一个模型类,并在其中声明了一个数组作为属性。
@interface MyModel : NSObject
@property (strong, readwrite) NSArray *charactersToDisplay;
@end
在我的app委托类中,我将MyModel声明为属性。
@interface MyAppDelegate : NSObject <NSApplicationDelegate>
@property (strong, readwrite) MyModel *myModel;
@property (weak) IBOutlet NSObjectController *myModelController;
- (IBAction)test:(id)sender;
@end
在MainMenu.xib中,我拖放了一个对象控制器对象,并在MyAppDelegate中对myModel执行了绑定。
我正在努力实现以下目标:
我在MyAppDelegateChange中定义了一个动作测试:,它绑定到一个按钮,并尝试更改charactersToDisplay中的值。
问题是:
当我使用此代码时,它无效:
[self.myModel setCharactersToDisplay:[[NSArray alloc] initWithObjects:@"1",@"2", @"3", "@4", @"5", nil]];
但是,如果我尝试使用下面的代码通过对象控制器更改其值,则它正在运行:
[[self.myModelController content] setCharactersToDisplay:[[NSArray alloc] initWithObjects:@"1",@"2", @"3", "@4", @"5", nil]];
任何人都可以建议我 - 当我试图通过调用myModel上的setter方法直接更改值时,为什么它不起作用?
答案 0 :(得分:0)
这是因为如果你想从appDelegate访问myModel,你需要让它拥有IBOutlet,然后在界面构建器中连接该出口。将IBOutlet添加到myModel,如下所示。
@interface MyAppDelegate : NSObject <NSApplicationDelegate>
@property (strong, readwrite) IBOutlet MyModel *myModel;
@property (weak) IBOutlet NSObjectController *myModelController;
- (IBAction)test:(id)sender;
@end
然后将该出口连接到界面构建器内的MyModel对象。