0

OSXLion用のCocoaアプリを作成しようとしています。AppControllerコードに次の行があります。

self.viewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil appController:self];
[_view addSubview:[_viewController view]];
[[_viewController view] setFrame:[_view bounds]];

LoginViewControllerは次のようになります。

@implementation LoginViewController

@synthesize appController = _appController;

- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil appController:(AppController *)appController {

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self setAppController:appController];
        NSLog(@"Appcontroller init: %@", _appController);
    }    

    return self;
}

- (IBAction)login:(id)sender {

    NSLog(@"Appcontroller login: %@", _appController);
}

ログイン方法はボタンクリックに接続されています。

ログ:

2012-05-23 12:45:49.574 QBLoader[3241:503] Appcontroller init: <AppController: 0x7fe2ab210440>
2012-05-23 12:45:52.085 QBLoader[3241:503] Appcontroller login: (null)

2番目のログ行がnullなのはなぜですか?

4

1 に答える 1

0

のインスタンスが複数あることを示したのでLoginViewController、xibs をチェックして、そのタイプのオブジェクトをどこかに作成したかどうかを確認します。特に、アクションを接続する xib から始めます-login:。のインスタンスが 1 つしかない場合AppController、一般的な方法は、 でオブジェクトを作成し、MainMenu.xibそれをアプリのデリゲートのアウトレットにアタッチすることです。次に、次のようなものを使用[[NSApp delegate] appController]してアクセスできます。

于 2012-05-23T12:18:46.160 に答える