0

私はおかしくなりそうだ!わからない。2番目のウィンドウを開始すると、2番目のウィンドウコントローラー内でメソッドが呼び出されます。この方法は多くの計算を行っており、アウトレットを介してラベルにいくつかの結果を入れる必要があります。ラベルは空のままです。それを機能させる方法がわかりません。

私の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ますか?

前もって感謝します!!!

4

3 に答える 3

0
  1. なぜweakを使用しているのかを正確に指定できますか?

  2. 使用してみてください:

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

    また、コンセントは接続していますか?

  3. ViewControllers の考え方は、モデルから計算またはロジックを要求し、それをビューに送信することです。したがって、これを設計フローと呼ぶつもりはありませんが、iOS の Model View Controller の考え方に従う方がよいでしょう。

于 2013-01-23T22:43:44.737 に答える
0

私はついに自分の問題を見つけました。アウトレットをResultWindowControllerxibのオブジェクトにバインドしました。バインディングを に変更したところ、File's Owner現在は機能しています。

于 2013-02-19T11:24:31.727 に答える
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 に答える