2012-05-15 27 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