ios - 有什么办法可以避免像tabbarcontroller那样调用viewdidload方法吗?

标签 ios objective-c iphone uinavigationcontroller viewdidload

我正在开发一个基于 map 的应用程序。因此,一旦用户打开 MapViewController,我就会每 5 秒加载一些数据。

我正在使用导航 Controller (推送 View Controller )。

所以每次当用户转到 MapViewController viewdidload 方法调用时。我不想那样。

这就是为什么我试图避免像 tabbarcontroller 这样的 viewdidload 方法。

有什么办法可以实现吗?

最佳答案

viewDidLoad 被调用是因为当您将 MapViewController 从导航 Controller 的顶部弹出时,它正在被释放。当您重新创建 View Controller 时,它会重新分配,并且 View 会再次加载。如果您在包含导航 Controller 的类中保留对 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];
}

关于ios - 有什么办法可以避免像tabbarcontroller那样调用viewdidload方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40924796/

相关文章:

ios - Delphi 在链接后从编译文件夹中删除 iOS64 二进制文件

iphone - 网络应用程序中的 2 条腿 oauth 专门用于它随附的 iphone 应用程序?

iphone - 如何将白色像素更改为黑色像素

ios - 检测首次启动时出错(Swift)

iPhone - 如何获取用户的日期格式

iphone - Facebook 使用什么技术在他们的 iPhone 应用程序中生成他们的新闻提要?

ios - 具有多个输出的 AVCaptureSession?

iphone - iOS 中的多语言文档 (RTF) : Files, SQLite、核心数据?如何?

objective-c - 使 Cocoa 窗口全屏显示

iOS以编程方式向约束添加乘数