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

结果窗口控制器.m:

-(void)awakeFromNib
{
    NSString *initial =@"-";
    [_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方法完成后设置标签吗?

提前致谢!!!

4

3 回答 3

0
  1. 你能具体说明你为什么使用弱吗?

  2. 尝试使用:

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

    另外,你连接插座了吗?

  3. ViewControllers 的想法是从模型请求计算或逻辑,然后将其提交给视图。所以,我不会真的把它称为设计流程,但最好遵循 iOS 中的模型视图控制器的想法。

于 2013-01-23T22:43:44.737 回答
0

我希望这会奏效,但要做到:

。H

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

.m

-(void)calculateResults {
     //your stuff

     averageValueLabel.text = [NSString stringWithFormat:@"%g", resultAverageLabel];
}
于 2013-01-23T22:59:43.247 回答
0

我终于找到了我的问题。我将插座与ResultWindowControllerxib 中的对象绑定在一起。我将绑定更改为File's Owner,它现在可以工作了。

于 2013-02-19T11:24:31.727 回答