내 응용 프로그램에 약 8 개의보기 컨트롤러가 있고, 똑같은 일을하는 각각의 함수가 있습니다. 나는 그것을 8 개의 모든 작업을 수행 할 수있는 하나의 중심 함수로 압축 할 수 있기를 바랐다.이 함수는 적절한 뷰 컨트롤러에서 작업을 수행 할 수 있도록 자체의 인스턴스를 받아야하지만, 하나는 내가 UIViewController *로 인스턴스 유형을 설정 전달되고 아이디어. 그렇게하면 뷰 컨트롤러를받을 수 있습니다. 문제는이 메서드에서 메서드를 실행해야하며 각각의 메서드는 UIViewController 및 해당 UIViewController 전달하는 해당 자식 클래스 사용자 지정 때문에 인스턴스에서 함수를 액세스 할 수 없습니다. 이것을 할 수있는 방법이 있습니까? 부모 클래스의 인스턴스에서 자식 클래스 메서드에 액세스합니까? 여기에 몇 가지 코드는 다음과 같습니다부모 클래스의 인스턴스에서 자식 클래스 메서드 호출
- (void)changeIsFullscreen:(UIViewController *)viewController { // <-- Right here is the
// ^^^ instance of the class that's passed to the function. I
// can't pass the child because there are so many different
// children that will be using it.
if (isFullscreen == NO) {
[viewController setIsFullscreen:YES]; // Right here is the child
// class method that i need to call.
// They all have the method, and if they
// don't i could use try/catch blocks to
// catch the error if there was some way to do it.
} else {
[viewController setIsFullscreen:NO]; // Right here is the child
// class method that i need to call
}
}
나는,있는 UIViewController를 확장 클래스에서 메소드를 작성하고 난 그냥 확장 새 클래스에서 다른 모든 아이 뷰 컨트롤러를 확장하는 것이 작업을 수행하는 방법을 알고있다. 그래도 그것이이 작업을 수행하는 올바른 방법인지는 모르겠다. 그렇지? 아니면 다른 방법으로해야합니까?
전화해야하는 메소드의 이름은 무엇입니까? – LuisCien
맞춤 방식입니다. 그것은 내가 게시 한 코드에 있습니다. setIsFullscreen. 인스턴스 특정 변수에 액세스하여이를 리턴합니다. – Katushai