我疯了!我只是不明白。 当我启动第二个窗口时,在第二个窗口控制器中调用一个方法。该方法正在进行大量计算,并应通过插座将一些结果放入标签中。标签保持空白。我不知道如何让它发挥作用。
我的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 =@"-";
[_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 :(得分:0)
您能否详细说明您为何使用弱电?
尝试使用:
[self._outputResultAverageValue setDoubleValue:resultAverageValue];
[self._outputResultToleranceValue setDoubleValue:resultToleranceValue];
另外,你有连接插座吗?
ViewControllers的想法是从模型请求计算或逻辑,然后将其提交给视图。所以,我不会真的称之为设计流程,但最好遵循iOS中的模型视图控制器的想法。
答案 1 :(得分:0)
我希望这会奏效,但确实如此:
·H
@property (nonatomic, strong) IBOutlet UILabel *averageValueLabel;
的.m
-(void)calculateResults {
//your stuff
averageValueLabel.text = [NSString stringWithFormat:@"%g", resultAverageLabel];
}
答案 2 :(得分:0)
我终于找到了我的问题。我将出口与xib中的ResultWindowController
对象绑定在一起。我将绑定更改为File's Owner
,现在可以正常工作。