2012-05-15 49 views
0

我是Cocoa和XCode的新手,我想获得您的帮助。我做了我的XIB窗口的控制器,并启动了我的窗口,我有一个参数,我想我的控制器需要有,y设置参数,但当我点击一个按钮,我需要恢复参数的价值是n或空。Objective C,可可,参数参考 - ITK #Cocoa

例如...

#import <Cocoa/Cocoa.h> 
#import "ITKExample1Filter.h" 
#import "Helper.h" 

@interface VentanaGraficaController1 : NSWindowController { 
    ViewerController* _viewerController; 
    IBOutlet NSComboBox *combo; 
    IBOutlet NSTextField *windowLevelTextField; 
    IBOutlet NSTextField *windowWidhTextField; 
    NSString *cad_; 
} 


@property NSString *cad; 
@property ViewerController* viewerController; 
//Metodos 
- (IBAction) converToRGB: (id)sender; 
- (IBAction) initAux: (id)sender; 
- (void) initController : (ViewerController*) vc: (int) n; 

@end 

@implementation VentanaGraficaController1 

//Parametros que sintetizaremos para manejar los valores por referencia 
@synthesize viewerController = _viewerController; 
@synthesize cad = cad_; 

// ..... 

- (IBAction) converToRGB: (id)sender { 
    NSAlert *a = [NSAlert alertWithMessageText:cad_ 
           defaultButton:@"OK" 
           alternateButton:@"Cancel" 
            otherButton:nil 
        informativeTextWithFormat:@"Cadena por syntetise"]; 
    [a runModal]; 
} 
// ..... The rest 

我用我的控制器如下:

VentanaGraficaController1 *controller = [[VentanaGraficaController1 alloc] initWithWindowNibName:@"VentanaGraficaController1"]; 

[controller setViewerController:viewerController]; 
[controller setViewerController:(viewerController)]; 
[controller setCad:@"works??"]; 
controller.viewerController = viewerController; 

controller.cad = @"works??"; 
[controller showWindow:nil]; 

当我显示NSSAlert它总是显示我cad_作为空白或空字符串,我尝试了很多方法,但我不知道为什么我失去了价值。

回答

1

看起来你并没有告诉你的控制器保留你的属性。

你有

@property NSString *cad; 
@property ViewerController* viewerController; 

默认为分配值,这意味着他们可以在你消失了。

尝试改变那些行:

@property (strong) NSString *cad; 
@property (strong) ViewerController* viewerController; 
+0

感谢的我将测试在晚上,我会告诉你 –

+0

喜再次,我不知道我做错了什么,我加强了我的财产,但它仍然失去价值,在resumen我做的是这... –

+0

解决,我是一个傻瓜...我加入另一个控制器与我的Xib具有相同类型的我的所有者文件,我是一个noob:P,只是我用所有者控制器来点击它,并且都运行良好 –

0

我试图通过设定一个参考的NSString的价值,在我的控制器的XIB我有

@interface VentanaGraficaController1 : NSWindowController { 
    ViewerController* _viewerController; 
    IBOutlet NSComboBox *combo; 
    IBOutlet NSTextField *windowLevelTextField; 
    IBOutlet NSTextField *windowWidhTextField; 
    NSString *cad_; 
} 


@property(strong) NSString *cad; 

@end 

And In my .m file I have the Action of the Button With this Code.... 

@implementation VentanaGraficaController1 

//Parametros que sintetizaremos para manejar los valores por referencia 
@synthesize viewerController = _viewerController; 
@synthesize cad = cad_; 

- (id)initWithWindow:(NSWindow *)window 
{ 
    self = [super initWithWindow:window]; 

    if (self) { 
     // Initialization code here. 

    } 

    return self; 
} 

- (IBAction) converToRGB: (id)sender { 
    NSAlert *a = [NSAlert alertWithMessageText: 
           cad_ 
           defaultButton:@"OK" alternateButton:@"Cancel" 

            otherButton:nil informativeTextWithFormat: 

        @"Just a Test"]; 
    [a runModal]; 
} 

而且在我的代码...

VentanaGraficaController1 *controller = [[VentanaGraficaController1 alloc] initWithWindowNibName:@"VentanaGraficaController1"]; 
    controller.cad = @"My striiiiing"; 
    [controller showWindow:nil]; 
    return 0; 

只是,我的意思是我有其他的对象,它是一个,我真的需要发送,但如果我不能发送一个NSString这是出于同样的原因,我有近2天这一点。

我已经使用了setter过,但我得到了同样的结果,当我打印的NSString蒙山NSSAlert它打印的字符串作为空或Nill