2013-01-23 87 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