, портируя наше последнее приложение для iPhone на универсальное приложение, я решил использовать контроллер SplitView для iPad внутри TabBarController.SplitViewController управляется AppDelegate для каждой вкладки.
Все работает нормально, но моя проблема в том, что мой MasterView (слева от SplitView) включает в себя 4 кнопки категорий для изменения данных TableViews.Если я нажимаю одну из кнопок, TableView необходимо обновить / Обновить данные, чтобы отобразить новый контент выбранной категории.Я создал функцию для внесения изменений и связал свои кнопки с ней в конструкторе интерфейсов.
В конце своей функции я попытался обновить контроллер следующим образом:
[self tableView ReloadData];
но SplitView не показывает обновление.Все еще старые данные.Я немного протестировал NSLog, чтобы проверить, правильно ли работает моя функция.Нет проблем.
Затем я попытался получить доступ к tableView через сам SplitViewController, например:
// PresetController is my TableViewController in the SplitView
UISplitViewController *split = (UISplitViewController *)self.parentViewController;
PresetController *detail = [split.viewControllers objectAtIndex:0];
[detail.tableView reloadData];
Опять нет ошибок, но нет обновления.
AmЯ что-то пропустил?Есть ли способ легко перезагрузить TableViewController в SplitView?Я прочитал кое-что об отправке уведомления через NotificationCenter делегату, но все еще не смог найти полезный ресурс.
РЕДАКТИРОВАТЬ:
Для понимания моей структуры,вот способ, которым я настроил SplitView в моих AppDelegates "didFinishLaunchingWithOptions" Метод:
NSMutableArray *controllers = [NSMutableArray arrayWithCapacity:[self.rootController.viewControllers count]];
int tabNum = 0;
for (UIViewController *controller in self.rootController.viewControllers) {
UISplitViewController *split = [[[UISplitViewController alloc] init] autorelease];
split.tabBarItem = controller.tabBarItem;
iPadDetailView *detail = [[iPadDetailView alloc] initWithNibName:@"iPadDetailView" bundle:nil]; // a detail view will come here
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:detail] autorelease];
split.viewControllers = [NSArray arrayWithObjects:controller, nav, nil];
[controllers addObject:split];
}
tabNum++;