我想在iOS应用程序中重新加载ViewController
。我做了一些研究,答案总是[self viewdidload]
或setNeedsDisplay();
但在我的情况下我需要重新加载所有内容(init,loadView和viewDidLoad)
我写了一个重装函数:
- (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];
}
答案 0 :(得分:3)
也许你可以尝试这样的事情:
-(void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
}
-(void)reloadView
{
[self configureView];
}
-(void)configureView
{
variable1 = something;
variable2 = somethingElse;
}
-(void)atSomeOtherPointInTime
{
[self reloadView];
}
您不应该自己调用视图控制器的生命周期功能,例如viewDidLoad
,viewWillAppear
等。
答案 1 :(得分:1)
根据Apple's documentation,你应该从不调用loadView方法。
你永远不应该直接调用这个方法。视图控制器调用 请求view属性但当前为nil时此方法。 此方法加载或创建视图并将其分配给视图 属性。