У меня есть этот UISplitViewController
, в котором как основной, так и подробный VC являются UINavigationController
подклассами. Оба должны работать "синхронно", т. е. когда один выдвигает новый VC, второй тоже должен проталкивать его. Когда один лопнет, другой тоже должен лопнуть. Один всегда вызывает одно и то же действие для другого.
Я уже могу справиться с отправкой части проблемы, так как функции отправки явно указаны в каждом классе, который я использую.
Поппинг, с другой стороны, был большой проблемой. Действие запускается, когда пользователь нажимает кнопку «Назад», и я не знаю, как обнаружить это событие. Одним из возможных решений является обнаружение события.
Еще одно решение, о котором я подумал, состояло в том, чтобы переопределить UINavigationController
- popViewControllerAnimated:
, заставив один класс выталкивать другой класс, вот так:
// On DetailNav
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
// Code to make MasterNav pop
return [super popViewControllerAnimated:animated];
}
// On MasterNav
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
// Code to make DetailNav pop
return [super popViewControllerAnimated:animated];
}
Я не стал добавлять полный код, потому что этого достаточно, чтобы заметить, что этот подход вызовет бесконечный цикл, в конечном итоге вытолкнув оба NavControllers в их корни (и затем, возможно, сбой).
Каков наилучший способ добиться желаемого поведения?