Я пытаюсь отправить действия от прикосновений к кнопке на контроллер, отличный от того, который действует как владелец файла. У меня есть четыре отдельных области экрана, которыми я хотел бы управлять с помощью четырех отдельных контроллеров (buttonController, toolbarController, textController и graphicController) с пятым контроллером (mainController), управляющим другими четырьмя. mainController также связан с владельцем файла. Получить нажатия кнопок, которые будут обрабатываться mainController, легко:
Файл MainController.h:
- (IBAction)buttonIsTouched:(id)sender;
Файл MainController.m:
- (IBAction)buttonIsTouched:(id)sender {
..handle button touch event etc.
}
Затем в Интерфейсном Разработчике свяжите событие Touch Down с владельцем файла, выберите buttonIsTouched
и все, что нужно. Все работает отлично.
Однако, когда я делаю то же самое для контроллера, который не является контроллером Владельца Файла, происходит сбой приложения. Вот что я сделал:
Создание четырех контроллеров в качестве переменных экземпляра mainController.
Создайте их в -[MainController viewDidLoad]
.
Укажите метод обработки кнопок точно так же, как указано выше.
В Интерфейсном Разработчике перетащите шаблон Объекта из Библиотеки (четыре раза) в браузер mainController.xib.
Установите тип для этих объектов ButtonController
, ToolBarController
, TextController
и GraphicsController
соответственно.
Свяжите событие Touch Down с объектом ButtonController
и выберите запись buttonIsTouched
(в маленьком всплывающем окне)
Создайте и запустите приложение
Нажмите кнопку
Сбой - извините, я не записал код ошибки, но он был похож на INVALID_ACCESS
Конечно, я могу сделать так, чтобы все входные данные сначала отправлялись в mainController, а затем делегировались каждому отдельному контроллеру, но это кажется неэффективным решением, особенно потому, что я хочу, чтобы нижние контроллеры выполнили некоторую работу перед передачей сообщений в mainController. Необходимость пройти через mainController, а затем вернуться назад, если меня это раздражает.
Если кто-то знает, как это сделать, и у него есть пример кода, который делает нечто похожее на то, что я хочу сделать, я был бы признателен.
ас