File 's Owner 역할을하는 컨트롤러가 아닌 다른 컨트롤러로 버튼 터치로 액션을 보내려고합니다. 4 개의 개별 컨트롤러 (buttonController, toolbarController, textController 및 graphicController)와 다섯 번째 컨트롤러 (mainController)가 다른 네 개의 컨트롤러를 제어하는 방식으로 화면의 네 가지 영역을 가지고 있습니다. mainController는 또한 File 's Owner와 관련된 것입니다. mainController에 의해 처리되는 버튼 누름을 얻으려면 쉽게 :File 's Owner가 아닌 다른 대상에 작업을 보내는 방법은 무엇입니까?
MainController.h 파일 :
- (IBAction)buttonIsTouched:(id)sender;
MainController.m 파일 : 인터페이스 빌더에서 다음
- (IBAction)buttonIsTouched:(id)sender {
..handle button touch event etc.
}
, 아래 버튼 터치를 연결 이벤트를 파일 소유자와 함께 선택하고 buttonIsTouched
을 선택하면됩니다. 모두 잘 작동합니다. 그러나 File 's Owner 컨트롤러가 아닌 컨트롤러에서 똑같은 작업을 수행하면 응용 프로그램이 충돌합니다. 다음은 내가 한 일입니다.
4 개의 컨트롤러를 mainController의 인스턴스 변수로 만듭니다. -[MainController viewDidLoad]
에서 인스턴스를 생성하십시오. 위와 똑같이 버튼 처리 방법을 제공하십시오. Interface Builder에서 Object template를 Library (4 회)에서 mainController.xib 브라우저로 드래그하십시오. 이 개체의 유형을 ButtonController
, ToolBarController
, TextController
및 GraphicsController
으로 각각 설정하십시오. 터치 다운 버튼 이벤트를 ButtonController
객체와 연결하고 작은 팝업 상자에 항목을 선택하십시오. 버튼을 클릭하십시오. 오류 코드를 적어 두지 않았지만 INVALID_ACCESS와 비슷했습니다
물론 모든 입력을 먼저 mainController로 이동 한 다음 각 개별 컨트롤러에 위임 할 수 있습니다.하지만 이것은 하위 컨트롤러가 업스트림 쪽 메시지를 받기 전에 일부 작업을 수행해야하기 때문에 비효율적 인 해결책으로 보입니다 mainController에. mainController를 거쳐야하고, 그런 경우에 나는 친절합니다.
누구나이 작업을 수행하는 방법을 알고 있고 내가하고 싶은 것과 비슷한 작업을 수행하는 샘플 코드가 있으면 감사하게 생각합니다. 당신의 접근 방식의
교류