Этот вопрос для приложения OSX, но тот же принцип может быть и для iOS.
У меня есть NSWindowController на раскадровке со следующей настройкой.
A. MainWindowController имеет в качестве подвидов:
1) Панель инструментов с кнопкой
2) SubVcA
viewController со своим содержимым
B. SubVcA
содержит в качестве содержимого представление SubVcB
viewController'а
C. SubVcB
имеет функцию ButtonPressed
Цель состоит в том, чтобы вызвать функцию нажатия кнопки в SubVcB
viewController, нажав кнопку на панели инструментов.
То, как я это делал, состоит в том, чтобы иметь цепочку реализаций методов от mainWindowController до целевого viewController, например:
MainWindowController call method on SubVcA
-->SubVcA call method on SubVcB
---> SubVcB call method buttonPressed
Это работает, но становится беспорядочным, когда стек контроллера становится примерно на 4 уровня в глубину. Это также становится еще более запутанным, когда SubVC(B) должен отправлять данные обратно в MainWindowController, потому что для того, чтобы иметь инкапсуляцию (например, не позволяя SubVC(B) иметь слишком много информации о своих вызовах viewControllers), Я должен реализовать методы делегата для резервного копирования цепочки. Это становится еще более запутанным, когда у вас есть более одной кнопки на панели инструментов.
Теперь... Я только начал возиться с элементом firstResponder на раскадровке.
И я понимаю, что появляется ОГРОМНЫЙ список всех методов, которые реализованы в вашем приложении с помощью -(IBAction)
.
Итак, теперь мой вопрос: чтобы уменьшить беспорядок методов вверх и вниз по иерархии представлений, является ли хорошим дизайном приложения простое подключение действия кнопки панели инструментов MainWindowController непосредственно к методу buttonPressed в SubVc (B) viewController с использованием firstResponder объект на раскадровке?
Кроме того, есть ли какие-либо другие шаблоны дизайна, которые уменьшат беспорядок?