항상 내 AppController 개체 내에서 모 놀리 식 코드 블록을 실행 한 후에는 별도 모델 컨트롤러 개체를 사용하여 코드를 모듈화하는 방법을 배웠습니다. :-))NSTextField 모델 컨트롤러 개체에서 쓸 수 없습니다.
간단한 테스트 응용 프로그램에는 기본 AppController와 두 개의 모델 객체 (Model1 및 Model2)가 있습니다. AppController에서 모델로 데이터를 성공적으로 전달할 수 있으며, 모델 자체가 메소드를 실행하고 전달 된 데이터를 '내부적으로'의도 한대로 처리 할 수 있습니다.하지만 모델에서 전달 된 데이터를 처리하도록 NSTextField를 전달할 수는 없습니다. UI. 여기에 내 코드의 관련 부분입니다 : AppController.m에서
는 Model2.h # import를
@interface Model2 : NSObject
{
IBOutlet NSTextField *passedStringField;
}
- (id)initWithStuff:(NSString*)passedString :(int)passedNum;
@end
에서 "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
을 ... # import를 ... 그리고 마지막으로 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
두 모델 OBJ에서 요법에는 일반적인 NSTextField에 대한 콘센트가 있으며 두 개체에서 필드로 컨트롤을 드래그하여 연결했습니다. 내 AppController NSTextField에 대해 알고 있지 않습니다 (그리고 나는 알고 싶지도 않습니다). 컨트롤러 개체와 모델 개체간에 IB 연결이 이루어지지 않았습니다.
NSLog는 모델 객체가 생성되고 있으며, 전달 된 값으로 GUI 윈도우의 텍스트 필드에 멀리 있지만 그곳으로 가도록 지시합니다. 나는 어떤 컴파일러 에러 나 경고도 얻지 못한다. 아마도 'setTarget :'이라는 어떤 종류의 호출이 누락 되었습니까?
도움/아이디어를 많이 주시면 감사하겠습니다. 감사 :-)
G'day from Adelaide, Rob :-). 네, 지금 이걸 가지고 있습니다, 도움을 많이 주셔서 감사합니다. – Bender
그냥'-init' 메쏘드에서 콘센트에 접근하여 잡았습니다 .. 나를 구해 주셔서 감사합니다. – Ian