У меня есть приложение с панелью вкладок для открытия различных контроллеров представления, как это:
firstViewController = [[UITableViewController alloc] init];
UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
[firstNavigationController setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"Add" image:[UIImage imageNamed:@"Add.png"] tag:1]];
[viewControllers addObject:firstNavigationController];
secondViewController = [[UITableViewController alloc] init];
UINavigationController *secondNavigationController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
[secondNavigationController setTabBarItem:[[UITabBarItem alloc] initWithTitle:@"List" image:[UIImage imageNamed:@"List.png"] tag:2]];
[viewControllers addObject:secondNavigationController];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:viewControllers];
[[self window] setRootViewController:tabBarController];
Это нормально.Теперь у меня есть дополнительное требование для навигации, firstViewController может быть вызван из secondViewController, передавая ему данные.
Единственный найденный мной способ передачи данных в тот же экземпляр firstViewController, доступ к которому осуществляется с помощью вкладкиПанель выглядит следующим образом (во втором коде ViewViewController):
firstViewController = [[[[[self tabBarController] viewControllers] objectAtIndex:0] viewControllers] objectAtIndex:0];
Это прекрасно работает , но я нахожу это грязным, особенно если я решу изменить порядок представлений на вкладкеБарный контроллер.
Я также исследовал способ тегирования, но, похоже, не настолько улучшил код.
Есть ли другой, более чистый способ?