[英]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];
}
您不应该自己调用视图控制器的生命周期函数,例如viewDidLoad
, viewWillAppear
等。
根据Apple的文档,您永远不要调用loadView方法。
您永远不要直接调用此方法。 当请求其视图属性但当前为nil时,视图控制器将调用此方法。 此方法加载或创建视图,并将其分配给view属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.