有没有更好的方法来编写这个工作,但是非常丑陋的代码?

时间:2009-07-16 20:59:12

标签: iphone cocoa-touch

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

  NSLog(@"switching views");
  if([viewController isKindOfClass: [UINavigationController class]] &&
     [[[viewController viewControllers] objectAtIndex: 0] isKindOfClass: [SavedViewController class]]) {

      NSLog(@"its a SavedViewController");
      [[[[viewController viewControllers] objectAtIndex: 0] tableView] reloadData];
  }

}

3 个答案:

答案 0 :(得分:2)

为什么不把重载数据调用放在SavedViewController类的viewDidAppear方法中?

答案 1 :(得分:1)

Dot符号会清理一些支架林,但这就是我能想到的。

答案 2 :(得分:1)

可可的重大折衷是可读性与简洁性。

你离我所做的事情并不遥远:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
  NSLog(@"switching views");
  if([viewController isKindOfClass: [UINavigationController class]]) {
      id first_view_controller = [viewController.viewControllers objectAtIndex:0];
      if ([first_view_controller isKindOfClass: [SavedViewController class]) {
          NSLog(@"its a SavedViewController");
          [first_view_controller.tableView reloadData];
      }  
   }
}

编辑:根据C. McCall在几个地方使用点符号

再次编辑:看起来像ObjC做短路。