我正在开发一个基于地图工作的应用程序。所以一旦用户打开MapViewController
,我会每5秒钟加载一些数据。有没有办法避免调用像tabbarcontroller viewdidload方法?
我正在使用导航控制器(推视图控制器)。
所以每当用户去MapViewController
viewdidload
方法调用。我不想那样。
这就是为什么我试图避免viewdidload
方法如tabbarcontroller
。
有什么办法可以达到这个目的吗?
我正在开发一个基于地图工作的应用程序。所以一旦用户打开MapViewController
,我会每5秒钟加载一些数据。有没有办法避免调用像tabbarcontroller viewdidload方法?
我正在使用导航控制器(推视图控制器)。
所以每当用户去MapViewController
viewdidload
方法调用。我不想那样。
这就是为什么我试图避免viewdidload
方法如tabbarcontroller
。
有什么办法可以达到这个目的吗?
试试这个
-(void)clickForPush{
// declarre viewcontroller e.g 'saveRecipeVC' instance globally in interface
if (!saveRecipeVC) {
saveRecipeVC = [self.storyboard instantiateViewControllerWithIdentifier:SaveRecipeVCID];
}
[self.navigationController pushViewController:saveRecipeVC animated:YES];
}
viewDidLoad
正在调用,因为当您将其从导航控制器的顶部弹出时,您的MapViewController
正在取消分配。当您重新创建视图控制器时,它将重新分配,然后视图再次加载。如果您在包含导航控制器的类中保留对MapViewController
的引用,那么ARC将不会释放该对象,并且您可以使用此引用将其推回堆栈,以免再次调用viewDidLoad
。
编辑:添加代码以供参考:
MapViewContoller *mapViewController; // declared globally so there's a strong reference.
- (void) openMapViewController {
if (!mapViewController) {
mapViewController = [self.storyboard instantiateViewControllerWithIdentifier: MapViewControllerID];
}
[self.navigationController pushViewController: mapViewController, animated: YES];
}
viewDidLoad中打算使用时,不可能或有效地在一个XIB配置接口的100%。有时,您希望在视图上设置的特定属性在XIB中不可用。有时候,你使用自动布局,并且你意识到编辑器实际上比编写自动布局代码更糟糕。有时,您需要修改图像,然后将其设置为按钮的背景。
如果你不想做这些事情让你的viewDidLoad为空。比避免。或
将条件添加到您的viewDidLoad中。
(void)viewDidLoad {
[super viewDidLoad];
if(condition) {
// put your code here
}
}
把导航控制器(推视图控制器) –