0

Apple の SimpleDrillDown の例を試して、それをタブ バーに配置しようとしました。問題は、ビューが表示されないことです。App Delegate の次のコードが原因であることがわかっています。タブバーに合わせて変更するのに苦労しており、いくつかの指針をいただければ幸いです。

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

  // Create the data controller and pass it to the root view controller.
  UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
  RootViewController *rootViewController = (RootViewController *)[[navigationController viewControllers]objectAtIndex:0];

  DataController *controller = [[DataController alloc] init];
  rootViewController.dataController = controller;
  self.dataController = controller;
}

次のように置き換えましたが、この行EatCatTVC *rootViewController = (RootViewController *)[[navigationController viewControllers]objectAtIndex:0];はエラーをスローします

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // Override point for customization after application launch.
  UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
  // Create the data controller and pass it to the root view controller.

  EatCatTVC *rootViewController = (RootViewController *)[[navigationController viewControllers]objectAtIndex:0];
  DataController *controller = [[DataController alloc] init];
  rootViewController.dataController = controller;
  self.dataController = controller;
  return YES;
}
4

1 に答える 1

1

存在しないオブジェクトにアクセスしているため、コードが失敗しています

EatCatTVC *rootViewController = (RootViewController *)[[navigationController viewControllers]objectAtIndex:0];

この行navigationControllerの「変更された」バージョンには存在しません。

「rootController」がUITabBarControllerクラスに設定されていることを確認してください (Interface Builder でこれを設定したと仮定します)。

そして、存在することを意図した UIViewController` インスタンスsetViewControllers:animated:を提供するために使用します。UITabBarController' instance with (for instance)

于 2012-08-14T12:13:25.270 に答える