1

サブビュー付きのVCがあります。私にはsubview levelボタンがあります。ボタンでビューが更新されるようにしたい。

IBActionコードはVCにあります。BOOL現在、値を切り替えるだけです。

サブビューに戻るdrawRect:メソッドは、をテストし、BOOLそれに応じてビューを変更するコードです。

私の観察では、ボタンが押されると、IBActionコードが実行され、が切り替えられますBOOLが、drawRect:メソッドは呼び出されません。

drawRectを手動で呼び出してみました(良い習慣ではなく、機能しませんでした)。setNeedsDisplayを呼び出してみましたが、それも機能しませんでした(プログラムで作成されたサブビューを参照する方法がわかりませんでした)。

提案を歓迎します。

IBActionコードは簡単ですが、以下に含まれています。

- (IBAction)rotateWindowButtonWasPressed:(id)sender
{
    // just flip the boolean here. Need to make the code change in drawRect: in top2View.m
    if ([myGlobals gWinVertical])
        [myGlobals setGWinVertical:NO];
    else
        [myGlobals setGWinVertical:YES];
    // Hoping this would force a redraw, but bounds have to change...:(
    //_top2ViewOutlet.contentMode = UIViewContentModeRedraw;
}
4

2 に答える 2

10

drawRect呼び出しを発行するsetNeedsDisplayには、変更したビューを呼び出します。OSはそのビューでdrawRectを呼び出し、重複するビューに自動的に影響を与えます。

あなたの場合、私は思う

[self.view setNeedsDisplay]

于 2013-02-26T08:17:09.807 に答える
0

何が起こったのかわからない-私の問題を解決する上記の答えがありましたが、今はなくなっていますか?とにかく-答えはプログラムでボタンを作成することです。次に、drawRect:が存在するサブビューレベルにメソッドを含め、setNeedsDisplayを使用して画面を再描画できます。それと、IBを使用し、VCレベルでIBActionコードを使用することとの比較です。

于 2013-02-27T06:22:22.207 に答える