1

プログラムがデータを処理している間にさまざまなメッセージを表示したいシートを作成しました。シートは正しく開閉し、IB アウトレットを使用してメイン コントローラー (シートの所有者) に接続されているシートにテキスト ラベルがあります。

Nib は正しくロードされ、正しく開閉されますが、静的テキスト ラベルは更新されません。接続された IBOutlet は次のように定義されています。

IBOutlet id mySheetText;

シート上のテキストを変更しようとするために使用している呼び出しは次のとおりです。

[mySheetText setStringValue:@"Some text message..."];

この形式は、ラベルがメイン ウィンドウにある場合は正常に機能しますが、ラベルがシート上にある場合は何もしません。

IB のすべての接続は正しいようです。非常に単純なものが欠けていると確信しており、シートがメインウィンドウとは異なる「ウィンドウ」であるという事実と関係があると推測していますが、何も見つからないようですドキュメントで正しい方向に向けてください。

ちなみにシートのつなぎ方はこんな感じ…

NSWindow *mySheet;

@property (assign) IBOutlet NSWindow *mySheet;
@synthesize mySheet;

...そしてそれを開いた:

if (!serverSyncSheet) {
    [NSBundle loadNibNamed:@"mySheetNibFile" owner:self];
}

[NSApp beginSheet: self.mySheet
   modalForWindow: [[NSApp delegate] mainWindow]
    modalDelegate: self
   didEndSelector: NULL
          contextInfo: NULL];

何か案は?

* 編集 *

わかりましたので、私が部分的に正しいことがわかりました。テキスト値を読み取ろうとすると、正しいテキストに設定されていることがわかりますが、変更を表示するためにシートが更新されていません。ウィンドウに再描画するように指示する必要があると思います...これまでに行ったことはありません。ドキュメントに戻って、見つけられるかどうかを確認してください。呼び出す方法を知っている人がいたら教えてください。:) ありがとう!

4

1 に答える 1

0

まあ、私の疑惑は正しかった...それは単純なことだった。

ウィンドウを再描画する必要がありました。

[mySheet display];

ドー!:)

于 2012-06-12T23:23:58.377 に答える