繁体   English   中英

重新加载一个ViewController

[英]Reload a ViewController

我想在我的iOS应用程序中重新加载ViewController 我做了一些研究,答案总是[self viewdidload]setNeedsDisplay(); 但就我而言,我需要重新加载所有内容(init,loadView和viewDidLoad)

我写了一个reload函数:

- (void)reload{
    [self init];
    [self loadView];
    [self viewDidLoad];
} 

但我得到了警告

“表达式结果未使用”

它有效,但是我认为这不是正确的选择。 有什么建议么 ?

这是我的视图控制器的代码:

-(id) init {

    switch (_route) {

        case ROUTE_GPS:
            baseController = [[GpsController alloc] init];
            _key = KEY_GPS;
            break;

        case ROUTE_TEST:
            baseController = [[TestController alloc] init];
            _key = KEY_TEST;
            break;

        default:
            break;
    }

    return [super init];
}

-(void) loadView {
    [super loadView];
    [baseController initView:self];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(update:) name:_key object:nil];
}

也许您可以尝试这样的事情:

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self configureView];
}

-(void)reloadView
{
    [self configureView];
}

-(void)configureView
{
    variable1 = something;
    variable2 = somethingElse;
}

-(void)atSomeOtherPointInTime
{
    [self reloadView];
}

您不应该自己调用视图控制器的生命周期函数,例如viewDidLoadviewWillAppear等。

根据Apple的文档,永远不要调用loadView方法。

您永远不要直接调用此方法。 当请求其视图属性但当前为nil时,视图控制器将调用此方法。 此方法加载或创建视图,并将其分配给view属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM