iphone - 预渲染 UITabBarController View ?

标签 iphone objective-c cocoa-touch

我有一个带有 UITabBarController 的应用程序,它管理一些 UINavigationControllers,而 UINavigationControllers 又管理各种 UIViewControllers。

在 3G 手机上,我第一次通过 TabBar 按钮查看任何特定 View 时,它很慢,但此后,它很快。这在 3GS 手机上并不明显。我的问题是如何强制预渲染这些 View ?我尝试通过在启动时在不同的线程中调用它们来触发 loadView 函数,但这并没有做任何我不认为的事情。

为清楚起见,这里是我的代码中的一个简短片段,用于展示我在做什么。我有五个 View Controller ,但我只展示了两个的代码。 poiVC 只是一个标准的 UITableViewController 子类——我什至没有针对它的自定义 init 或 loadView 函数。

- (void)applicationDidFinishLaunching:(UIApplication *)application {

  self.mapVC = [[MapViewController alloc] init];
  NavControlBar * mapNavBar = [[[NavControlBar alloc] initWithViewController:mapVC 
                             withControlBar:[mapVC initBar]]autorelease];
  self.poiVC = [[POIViewController alloc] init];
  NavControlBar * poiNavBar = [[[NavControlBar alloc] initWithViewController:poiVC 
                             withControlBar:[poiVC initBar]]autorelease];

  NSArray *tabViewControllerArray = [NSArray arrayWithObjects:mapNavBar, poiNavBar, nil];
  self.tbc.viewControllers = tabViewControllerArray;
  self.tbc.delegate = self;

  [mapVC release];
  [poiVC release];
  [window addSubview:tbc.view];

我能否在用户查看第一个屏幕时让 poiVC 呈现,以便快速过渡?

最佳答案

 [self.mapVC view];
 [self.poiVC view];

您可以简单地请求 View Controller 的 View ,而不用对它做任何事情。这将返回 View ,并因此在需要时为您加载它。缺点当然是您会增加启动时间。另请注意,当内存不足时,您的 View 可能会被卸载,这会在切换到这些选项卡时再次导致延迟,但(至少会尝试)保持您的应用程序运行(通常被认为是一件好事)。

关于iphone - 预渲染 UITabBarController View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2061169/

相关文章:

iphone - NSInteger,NSNumber "property ' x' 具有 'retain' 属性必须是对象类型“

javascript - 如何从 Objective C 调用 javaScript?

objective-c - 方法调用 - Cocoa/Obj-C

iphone - iPad 照片库中相册的属性

iphone - iOS - 如何获取 TableView 中最后一项的 IndexPath?

iphone - 如何在 iOS 中收到横幅通知?

iphone - CLLocationManager Simulator 来模拟汽车移动?

iphone - 方法引用

iphone - 进度条不显示 iphone 中的逐步进度

ios - 没有自动换行的多行 UILabel?