5

ビュー全体を再描画することは可能ですか。

言語設定を完了するために必要です。問題は、そこにあるビューが再び描画された後にのみ言語が変更されることです。設定から出て再び入ると、言語が変更されます。しかし、すべてを保存した瞬間、言語は同じままです。

では、言語の変更が見つかった後、どのようにビューを再描画するか、アプリ全体を再描画する必要がありますか?

4

3 に答える 3

11

ARC では:

- (void)setLanguage:(LanguageType)languageType
{
    _language = languageType;

    //TODO:your settings

    [_theWholeView setNeedsDisplay];
}

それがうまくいかない場合、非常に厄介な解決策があります。ビュー全体をリロードすることができます。

次のようにコーディングできます。 view.h では、デリゲートを作成する必要があります。@protocol WholeViewDelegate

- (void)reloadData;

@終わり

ビューで.m

- (void)setLanguage:(LanguageType)languageType
{
    _language = languageType;

    //TODO:your settings

    [_delegate reloadData];
}

コントローラーでは、controller.m でデリゲートを実装する必要があります。

- (void)reloadData
{
    if(_wholeView)
    {
        [_wholeView removeFromSuperview];
    }
    // in the wholeView init method you should refresh your data
    _wholeView = [[WholeView alloc] init];
    self.view addSubview:_wholeView
}
于 2012-10-30T09:02:45.960 に答える
6

はい。電話[UIView setNeedsDisplay]参照)。

于 2012-10-30T09:02:54.180 に答える
1

setNeedsDisplay. を呼び出すだけで問題が解決します。setNeedsDisplay は、ビューのフレームを長方形のパラメーターとして渡すことによって、UIView クラスの drawRect 関数を実際に呼び出します。それが役立つことを願って....

于 2012-10-30T11:10:42.590 に答える