2012-05-23 140 views
0

在調用AppController的方法,我試圖建立OSX獅子可可應用程序。 我有我的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) 

爲什麼是第二個日誌行空?

+0

你嘗試在@synthesized線增加一個破發點,看看是否值被改變了嗎?您可能還想記錄自我以確保您在兩行中都獲得相同的對象。 – gaige

+1

是否有可能存在通過IB正在創建LoginViewController'的'多個實例,例如一個?如果你在'NSLog'中使用'%p'打印'self'它們是否匹配? – sbooth

+1

好吧,好像有多個LoginViewController實例。我不明白這是可能的。 – brasimon

回答

0

既然你表示有超過LoginViewController一個實例,我會檢查你的xibs看到,如果你已經創建了一個類型的對象的任何地方。特別是我會在那裏你連線了-login:行動的廈門國際銀行開始。如果您只有一個AppController實例,則通常的方法是在您的MainMenu.xib中創建該對象,並將其附加到應用程序委託中的插座。然後你可以使用類似[[NSApp delegate] appController]的東西來訪問它。

相關問題