2013-01-23 136 views
0

我要瘋了!我只是不明白。 當我開始第二個窗口時,在第二個窗口控制器中調用一個方法。該方法正在進行大量計算,並應通過網點將一些結果放入標籤中。標籤保持空白。我不知道如何使它工作。標籤不會標籤

我AppDelegate.m:

#import "AppDelegate.h" 
#import "ToDoItem.h" 
#import "ResultWindowController.h" 

@implementation AppDelegate 

- (IBAction)pushRun:(id)sender { 

    if (rwc) 
    { 
     [rwc close]; 
    } 
    rwc = [[ResultWindowController alloc] init]; 
    [rwc calculateResults];//add observer 
    [rwc setShouldCascadeWindows:NO]; //window re-opens at the same position 
    [rwc showWindow:self]; 
} 
@end 

我ResultWindowController.h:

#import <Cocoa/Cocoa.h> 

@interface ResultWindowController : NSWindowController 
{ 

} 
@property (weak) IBOutlet NSTextField *outputResultAverageValue; 
@property (weak) IBOutlet NSTextField *outputResultToleranceValue; 

-(void)calculateResults; 

@end 

ResultWindowController.m:

-(void)awakeFromNib 
{ 
    NSString *initial [email protected]"-"; 
    [_outputResultAverageValue setStringValue:initial]; 
    [_outputResultToleranceValue setStringValue:initial]; 
} 

- (void)calculateResults 
{ 
double resultAverageValue = 0, resultToleranceValue = 0; 

//calculations 
for-loop{ 

    resultAverageValue = (maxresult + minresult)/2; 
    resultToleranceValue = (maxresult - minresult)/2; 
} 

NSLog(@"resultaverage is:%f", resultAverageValue); 
[_outputResultAverageValue setDoubleValue:resultAverageValue]; 
[_outputResultToleranceValue setDoubleValue:resultToleranceValue]; 
} 

NSLog給我我想要顯示我的價值標籤。我也可以使用awakeFromNib方法初始化我的標籤。 我有設計失敗嗎?我需要確保在calculateResults方法完成後設置標籤嗎?

在此先感謝!

+0

'_outputResultAverageValue'的數據類型是什麼?代碼在哪裏試圖設置標籤的文本? – rmaddy

+0

嗨rmaddy,我添加了上面的代碼。它總是需要成爲一個文本嗎? '_outputResultAverageValue'是連接到筆尖標籤的NSTextfield插座。 – JFS

回答

0

我終於找到了我的問題。我用xib中的ResultWindowController對象來約束網點。我將綁定更改爲File's Owner,現在可以使用。

0
  1. 您能否指定爲什麼你使用弱?

  2. 嘗試使用:

    [self._outputResultAverageValue setDoubleValue:resultAverageValue]; 
    [self._outputResultToleranceValue setDoubleValue:resultToleranceValue]; 
    

    此外,有你連接插座?

  3. ViewControllers的想法是從模型中請求計算或邏輯,然後將其提交給視圖。所以,我不會真的將其稱爲設計流程,但最好遵循iOS中模型視圖控制器的想法。

+0

我用弱的奧特萊斯,它通常工作正常。我曾嘗試按照你的建議使用'self.',但它仍然不起作用。網點連接在IB。 – JFS

+0

你能再次引用你的代碼的其他部分嗎? – p0lAris

+0

想知道您是如何初始化您的標籤的。 – p0lAris

0

我希望這會工作,但這樣做:

.H

@property (nonatomic, strong) IBOutlet UILabel *averageValueLabel; 

.M

-(void)calculateResults { 
    //your stuff 

    averageValueLabel.text = [NSString stringWithFormat:@"%g", resultAverageLabel]; 
} 
+0

你好nlee918。我正在開發一個不是iOS的osx應用程序,但我嘗試了你的建議:'_outputResultAverageValue.stringValue = [NSString stringWithFormat:@「%g」,resultAverageValue];'。我在osx版本中找不到'NSLabel',但使用了'NSString'。不幸的是它仍然不起作用。但它編譯沒有錯誤。所以,這仍然是一個有趣的方法。 – JFS

+0

@JFS哦,對不起,我不知道你在用OSX編程。不幸的是,即使他們使用相同的語言,我也不熟悉OSX編程。 –

+0

絕對沒問題。適應的代碼不是越野車,而且仍然很有趣。謝謝! – JFS