2012-08-09 62 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