这应该很简单。
当我使用导航 Controller 从我的 Root View 切换到我的第二个 View 时,第二个 View 加载正常。
第二个 View 在“viewDidLoad”中创建了一个计时器来定期调用“updateData”方法。
也许我不了解这里的系统,但是当我回到根目录并再次转发到第二个 View 时,我得到了第二个 View Controller 的全新实例,它创建了一个新计时器(updateData 是被调用的频率是两倍)。
这不是正确的默认行为吗?如何显示第二个 View Controller 的第一个实例而不是创建一个新实例?
Best Answer-推荐答案 strong>
持久对象不一定是 View Controller 的属性。您可以为您的第二个 Controller (在 Root View Controller 中)创建一个属性,并且仅在您第一次推送它时实例化它。因为你有一个强指针指向它,所以当你回到第一个 Controller 时它不会被释放,你的计时器会继续运行。
- (IBAction)goToSecondView {
if (!self.secondViewController) { // secondViewController is a strong property
self.secondViewController = [self.storyboard instantiateViewControllerWithIdentifier"Second"];
}
[self.navigationController pushViewController:self.secondViewController animated:YES];
}
关于ios - View Controller 获得重复实例化,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/25194443/
|