2012-08-09 89 views
0

我卡住試圖將數據從一個NSWindowController傳遞到另一個。 我有2 NSWindowController已經被實例化和他們各自的NIB被加載在屏幕上,事實上firstWindowController加載第一,從用戶得到一些輸入,做一些計算並將它們保存在幾個變量和IBOutlets。在firstWindowController中用戶操作(NSButton)時,secondWindowController加載第二個Nib窗口。 讓說:如何傳遞2 NSWindowController之間的值

firstWindowController.h

@class secondWindowController; 

@interface firstWindowController : NSWindowController 
{ 
secondWindowController *_secondWindowController; 
} 
@property long double onedata; 
@property (strong) IBOutlet NSTextField *rZab; 
@property (strong) IBOutlet NSTextField *xZab; 
@end 

在firstWindowController.m是實例_secondWindowController,做綜合所有@財產的變量和對象,並加載相關的筆尖屏幕的代碼。同樣,onedata變量和兩個IBOulets都可以分配一些值。爲簡單起見省略。

secondWindowController.h

@interface secondeWindowController: NSWindowController 
long double newdata; 
-(void)getDataFromFirstWC; 
@end 

secondWindowController.m

#import "firstWindowController.h" 
#import "secondWindowController.h" 
#import "myAppDelegate.h" 

@implementation secondWindowController 
-(void)getDataFromFirstWC 
{ 
newdata = 0.0; 
newdata = (_firstWindowController.onedata); 
// Compilation fails here... 
} 
@end 

這不進行編譯。 _firstWindowController的實例不被識別??。 使用未聲明的標識符'_firstWindowController'

_firstWindowController的實例已經在我的應用程序委託中創建,它負責加載第一個窗口nib。

任何幫助完成這項工作?對更多或更少的類似問題的其他答案並沒有幫助我。

回答

0

您需要在secondWindowController中擁有firstWindowController的實例。在seconWindowController.h

:在您的seconWindowController.m

@class firstWindowController //<-- add this 
@interface secondeWindowController: NSWindowController 
{ 
firstWindowController *fwc; //<-- and this 
} 

long double newdata; 
-(void)getDataFromFirstWC; 
@end 

:試試這個

#import "firstWindowController.h" 
#import "secondWindowController.h" 
#import "myAppDelegate.h" 

@implementation secondWindowController 
-(void)getDataFromFirstWC { 
newdata = 0.0; 
newdata = (fwc.onedata); //<-- add this and it should work 
NSLog(@"newdata is: %f", newdata); 
} 
@end 

只要我明白你的代碼到目前爲止你不需要創建您的firstWindowController中的secondWindowController的實例。祝你好運!

+0

你好user1544073做了答案幫助不知何故? – JFS 2013-06-16 19:27:57