我有一些uiview,一个用这种方式打电话给另一个:
从第一次uiview:
MyViewController *contr1 = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.view addSubview:contr1.view];
从第二次uiview:
MyViewController2 *contr2 = [[MyViewController2 alloc] initWithNibName:@"MyViewController2" bundle:nil];
[self.view addSubview:contr2.view];
现在在第三个uiview中我希望返回第一次更新它(调用viewDidLoad)。我能怎么做?
答案 0 :(得分:1)
首先 - 你做错了。
由于您正在使用视图控制器以模态方式呈现它们或推送它们:
MyViewController2 *contr2 = [[MyViewController2 alloc] initWithNibName:@"MyViewController2" bundle:nil];
[self presentModalViewController:contr2];
如果你想完全取消你的根视图控制器的模态控制器,你应该在你当前使用的控制器中获得一个指向它的指针,并发送一条消息来消除它上面的每个模态视图。
- (IBAction)doHomePage:(id)sender {
MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
[appDelegate.navigationController.rootViewController dismissModalViewControllerAnimated:YES];
}
您也可以使用viewDidLoad:
或viewWillAppear:
代替viewDidAppear:
。
如果我手写的话,代码中有一些拼写错误,请事先抱歉。