Я считаю NSNotification
не лучшим способом сделать это, так как вы соединяете несвязанные TableViewControllers. Я думаю, что поток информации в приложении имеет решающее значение.
Решение, которое я бы лично одобрил, - это наличие центрального класса, который управляет глобальными данными для вашего приложения. Это может быть класс AppDelegate
или произвольный класс менеджера, который управляет потоком данных и «вытягивает строки» и является посредником между различными независимыми ViewControllers.
Пример:
Используя этот код, вы можете получить ваш UITabBarController
и установить свой класс в качестве делегата ваших ViewControllers и т. Д.: * 10101 *
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *rootTabBarController = (UITabBarController *)self.window.rootViewController;
MyFirstTableViewController *firstVC = [rootTabBarController.viewControllers objectAtIndex:0];
firstVC.delegate = self; // Get informed about events in the first ViewController
MySecondTableViewController *secondVC = [rootTabBarController.viewControllers lastObject]; // Assuming you only have two Tabs
// Once you have the rootTabBarController you can cast it to the corresponding ViewController and access any nested UIViewControllers
return YES;
}
#pragma mark - MyFirstTableViewControllerDelegate
-(void)firstTableViewController:(MyFirstTableViewController *)sender didSomethingFancy:(MyFancyObject *)fancy{
// Do stuff like fetching some data, based on the event from the first ViewController
// Maybe tell the secondVC to refresh its data etc. etc.
}