5

単純なココア アプリケーションでカスタム ビューを再描画する際に問題があります。描画は、単純な NSSlider によって変更される 1 つのパラメーターに基づいています。ただし、-setParameter: および -parameter メソッドを実装し、インターフェイス ビルダーでスライダーの値をそのパラメーターにバインドしますが、それ自体を再描画するカスタム ビューを作成できないようです。

再描画を行うコードは次のようになります。

- (void)setParameter:(int)newParameter {
  parameter = newParamter;
  NSLog(@"Updated parameter: %d", parameter);
  [self setNeedsDisplay:YES];
}

ビュー自体は再描画されませんが、新しいパラメーターの設定に関するメッセージが表示されます。どんなアイデアでも大歓迎です!

4

4 に答える 4

5

通常の構文は: です[self setNeedsDisplay:YES]が、同じ意味だと思います。メソッドを実装していますか、それともスーパークラスのメソッドを- (void)drawRect:(NSRect)rect使用していますか?drawRect:

于 2008-11-29T08:14:49.230 に答える
2

理由は非常に単純な場合があります。ファイルの所有者はUIViewオブジェクトに接続していません。つまり、コンセントが正しく設定されていません。IB、Ctrlボタン、ドラッグメソッドを使用します:)

于 2011-05-17T10:25:54.843 に答える
2

NSOpenGLViewサブクラスの使用中にこの問題が発生した場合[[self openGLContext] flushBuffer]は、drawRect:.

于 2009-12-08T07:17:33.433 に答える
0

iOS 6 では、呼び出す関数はありません: setNeedsDisplay:YES. 私は同じ問題を抱えていて、この解決策を持ってきました: https://stackoverflow.com/a/15027374/1280800

それが役立つことを願っています。

于 2013-02-22T15:25:27.117 に答える