iPad обновляет основные данные из подробного представления.

Я хотел бы иметь возможность обновлять таблицу на основной стороне моего приложения на основе действия, предпринятого в моем контроллере подробного представления.

В этом случае у меня есть таблица заказов на левой (главной) стороне, которая детализируется, чтобы показать 3 уровня заказов: открытые, задержанные и отправленные. Итак, если я «изменю» статус заказа (отложу его, отложу, отправлю и т. д.), я хотел бы иметь возможность отразить это на главной стороне. Есть идеи?

С кнопки действия в контроллере подробного представления я пробовал:

1.

[[appDelegate.splitViewController.viewControllers objectAtIndex:0] reload];

2.

OrdersRootController *orc = [[OrdersRootController alloc] initWithNibName:@"Orders" bundle:nil];
orc = [appDelegate.splitViewController.viewControllers objectAtIndex:0];
[orc.tableView reloadData];

Редактировать:

Я попытался добавить уведомление, но оно не работает:

Я должен что-то упустить. . .

Я добавляю наблюдателя в awakeFromNib:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOrders:) name:@"OrderStatusChanged" object:odc];

и проводка из заказа:

[[NSNotificationCenter defaultCenter] postNotificationName:@"OrderStatusChanged" object:self];`

но указанный селектор никогда не срабатывает. . . что мне не хватает?


person Alan Carter    schedule 31.07.2011    source источник


Ответы (3)


Я бы передал ссылку (возможно, в AppDelegate) на табличное представление в подробном представлении в главное представление и напрямую вызвал данные перезагрузки таблицы.

Или вы можете использовать уведомления, главное представление вызывает уведомление, а подробное представление отвечает, загружая соответствующие данные.

person Devraj    schedule 31.07.2011
comment
Думал об уведомлении. Не использовал их много. Я посмотрю на это. . . - person Alan Carter; 31.07.2011
comment
Они довольно просты в использовании, вы можете передавать пользовательские данные в словарь, что очень удобно. - person Devraj; 31.07.2011
comment
Я должен что-то упустить. . . - person Alan Carter; 31.07.2011
comment
Я должен что-то упустить. . . Я добавляю наблюдателя в awakeFromNib: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOrders:) name:@"OrderStatusChanged" object:odc]; и публикую из order: [[NSNotificationCenter defaultCenter] postNotificationName:@"OrderStatusChanged" object:self];, но указанный селектор никогда не срабатывает. . . что мне не хватает? - person Alan Carter; 31.07.2011
comment
Ха! Переместил наблюдатель уведомлений в viewDidLoad, и он работает как чемпион! Спасибо! @Деврадж - person Alan Carter; 31.07.2011

Хотя вы уже выбрали ответ. Вызовите это в любом месте вашего DetailView:

UINavigationController *navController = self.splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)navController.topViewController;
person Marc    schedule 01.03.2013

Если вы используете контроллер splitview по умолчанию, вы можете сделать это

[self.rootViewController.tableView reloadData];
person Dmorneault    schedule 31.07.2011