2009-07-30 12 views
0

私はココアでアプリケーションを開発しています。今私は重大な問題に直面しています。 NSViewのコントロールNSButtonを非表示にすることはできません。私は次のコードを使用しましたNSViewのコントロールを非表示にできません

[btn setHidden:YES] 

この "btn"コントロールは隠されていません。ボタンが隠されているかどうかを確認するために、次のコードを使用しました。

[btn isHidden] 

しかし、これが返されます。また、このビューを表示している間はNSTextfieldに値を送ることができません。

ありがとうございます。このボタンを非表示にすることされない理由を知ることは困難であるアプリケーションで起こっている他に何を知らなければ

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 

答えて

1

ボタンを非表示にした後に一度実行ループを実行してみてください。

更新イベントが処理されないようにメインイベントループをブロックしていますか?一般的にこれは良いことではありません。

即時更新を強制するためにできることの1つは、ボタンまたはその親ビューまたはウィンドウでdisplayIfNeededを呼び出すことです。これにより、ビューが再描画されるはずです。これは、ボタンが正しい状態を描く(または描画しない)ことを検証するための実験として適しています。 displayIfNeededを呼び出すと表示されなくなると、更新イベントが正しく処理されない理由を判断する必要があります。

+0

ありがとう、これはNSProgressIndicatorで1秒ではなく0.02を隠すことを拒否しましたが、これはクリアされているようです。なぜdisplayIfNeeded、setNeedsDisplayなどがそれを強制しなかったのか分かりません。私のアプリのどこか他の場所にこれが普通に隠れる。 – GeoffCoope

+1

'[NSDate distantPast]'を使ってrunloopを1回だけ実行させることもできます。 – diederikh

1

関連する問題