Я работаю над приложением для iPad, где имею дело с двумя контроллерами. Мой родительский контроллер (скажем, контроллер A) имеет ячейку, которая при нажатии вызывает/переходит к дочернему контроллеру (скажем, контроллеру B) через pushViewController, как показано ниже:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ControllerB *controllerB = [[ControllerB alloc] initWithStyle:UITableViewStyleGrouped];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered
target:nil action:nil];
[self.navigationItem setBackBarButtonItem:backButton];
[self.navigationController pushViewController:controllerB animated:YES];
}
Теперь в ControllerB я имею дело с переключателем, который должен поддерживать свое состояние, когда пользователь перемещается назад и вперед от ControllerB к ControllerA, а затем обратно к ControllerB, т.е. пользователь изменяет состояние переключателя на ControllerB (например: YES), возвращается к ControllerA и затем, когда он возвращается к ControllerB, пользователь должен увидеть то же состояние переключателя, в котором он находился, когда возвращался назад. (т.е.: ДА)
Я думаю отправить состояние переключателя из ControllerB в ControllerA, чтобы, когда ControllerB снова инициализировался, можно было отправить состояние переключателя, чтобы установить состояние переключателя.
Несколько вопросов по дизайну:
- Это хорошая идея, чтобы иметь перекрестное соединение между контроллерами. т. е. ControllerA имеет объект ControllerB, но для отправки обратно состояния переключателя я планировал создать свойство в ControllerA для хранения состояния переключателя и присвоения ему значения состояния переключателя в Controller B. Но для этого мне придется создать объект для ControllerA в ControllerB, который может быть перекрестным соединением.
- Какими могут быть другие лучшие способы передачи данных с дочернего контроллера на родительский контроллер?