在始终从我的 AppController 对象中运行单片代码块之后,我刚刚学会了如何使用单独的模型控制器对象来模块化我的代码(使用起来更整洁,更不容易混淆:-))
我的简单测试应用程序有一个主 AppController 和两个模型对象(Model1 和 Model2)。我可以成功地将数据从 AppController 传递给模型,并且模型本身可以运行方法并按照它们的意图“在内部”处理传递的数据——但我无法让它们与用户界面。这是我的代码的相关部分:
在 AppController.m #import "AppController.h"
@implementation AppController
- (IBAction)passObjectsToModelController:(id)sender
{
NSString *stringToPass = @"Hello from Model2 :-)";
int numToPass=12345;
Model2 *ObjController2 = [[Model2 alloc]initWithStuff:stringToPass:numToPass];
[ObjController2 release];
}
@end
...在 Model2.h #import
@interface Model2 : NSObject
{
IBOutlet NSTextField *passedStringField;
}
- (id)initWithStuff:(NSString*)passedString :(int)passedNum;
@end
...最后在 Model2.m #import "Model2.h"
@implementation Model2
- (id)initWithStuff:(NSString*)passedString :(int)passedNum
{
if(self = [super init])
{
NSLog(@"now inside 'Model2' controller...");
NSLog(@"the passed string reads: %@",passedString); //••• this works •••
NSLog(@"the passed number is:%d",passedNum); //••• this works •••
[passedStringField setStringValue:passedString]; //••• WTF!!... this DOESN'T work! •••
// do something internally with passedNum here...
}
return self;
}
@end
两个模型对象都有到公共 NSTextField 的出口,我已经从两个对象控制拖动到字段并将它们连接起来。我的 AppController不 知道 NSTextField (我假设,甚至不想知道)。控制器对象和模型对象之间没有建立任何 IB 连接。
NSLog 告诉我正在创建模型对象,并且传递的值使它变得那么远......但不是从那里进入 GUI 窗口中的文本字段。我没有收到任何编译器错误或警告。我是否错过了某种“setTarget:”电话?
任何帮助/想法将不胜感激。谢谢 :-)