在ios中重绘视图

Dat*_*shi 5 objective-c ios

是否可以重绘整个视图.

我需要它来完成我的语言设置.问题是语言只会在再次绘制的视图后发生变化.就像你没有设置然后再次进入,然后语言改变了.但是当你保存一切时,语言保持不变.

所以,我应该如何重绘我的看法,或者最好整个应用程序,语言的变化后发现?

clo*_*sen 11

在ARC中:

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

    //TODO:your settings

    [_theWholeView setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,有一个非常麻烦的解决方案,它可以重新加载整个视图.

你可以像这样编码:在view.h中,你需要创建一个委托.@protocol WholeViewDelegate

- (void)reloadData;
Run Code Online (Sandbox Code Playgroud)

@结束

在view.m中

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

    //TODO:your settings

    [_delegate reloadData];
}
Run Code Online (Sandbox Code Playgroud)

在控制器中,您需要在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
}
Run Code Online (Sandbox Code Playgroud)


tro*_*foe 6

是.致电[UIView setNeedsDisplay](参考).