2013-10-21 5 views
1

내 응용 프로그램에 약 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를 확장 클래스에서 메소드를 작성하고 난 그냥 확장 새 클래스에서 다른 모든 아이 뷰 컨트롤러를 확장하는 것이 작업을 수행하는 방법을 알고있다. 그래도 그것이이 작업을 수행하는 올바른 방법인지는 모르겠다. 그렇지? 아니면 다른 방법으로해야합니까?

+0

전화해야하는 메소드의 이름은 무엇입니까? – LuisCien

+0

맞춤 방식입니다. 그것은 내가 게시 한 코드에 있습니다. setIsFullscreen. 인스턴스 특정 변수에 액세스하여이를 리턴합니다. – Katushai

답변

0

여기에 분명하지 않은 내용이있을 수 있지만 모든보기 컨트롤러 하위 클래스에서이 메서드를 구현하면 모든 중간 클래스에서 파생 된 것처럼 들립니다. 따라서, UIViewController에서 파생되고 -changeIsFiullscreen을 구현하는 클래스가 있고 모든 뷰 컨트롤러는 클래스에서 파생됩니다.

+0

맞아요, 글쎄, 난 아직 하지마. 나는 모든 것을 할 수 있도록 그것을 통과시켜야 할 것이다. 하지만, 좋은 생각이고 그렇게해야 할 일이 그렇게 잘못 될 수 있습니다. 난 그게 올바른 방법인지 확인하고 싶었어. 답변 감사합니다. – Katushai

관련 문제