Есть ли лучший способ написать этот работающий, но крайне уродливый код? - PullRequest
0 голосов
/ 17 июля 2009
- (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 ]

2 голосов
/ 17 июля 2009

Почему бы просто не поместить вызов перезагрузки данных в метод viewDidAppear класса SavedViewController?

1 голос
/ 17 июля 2009

Каким компромиссом для какао является удобочитаемость и лаконичность.

Вы не так уж далеки от того, что я бы сделал:

- (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 делает короткое замыкание.

1 голос
/ 17 июля 2009

Точечная нотация очистит некоторые леса брекетов, но это все, что я могу придумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...