0

다음 코드를 사용하여 UIViewController에서 "HelpviewController"를 호출하고 있습니다. 정상적으로 작동합니다.서브 뷰를 제거하고 컨트롤을 다시 보내십시오.

나는이 새로 추가 된 뷰를 제거하고 다시 시작 페이지로 제어를 전송해야 버튼을했을 나의 새로운 컨트롤러 InnerHelpViewController 내부
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InnerHelpPageViewController"]; 
      self.pageViewController.dataSource = self; 

      InnerHelpViewController *startingViewController = [self viewControllerAtIndex:0]; 
      NSArray *viewControllers = @[startingViewController]; 
      [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

      // Change the size of page view controller 
      self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30); 

      [self addChildViewController:_pageViewController]; 
      [self.view addSubview:_pageViewController.view]; 
      [self.pageViewController didMoveToParentViewController:self]; 

.

- (IBAction)unwindToMenuFromInnerHelp:(id)sender { 
    [self.view removeFromSuperview]; 
} 

이 호출은 새로 추가 된보기를 제거하지만 "MenuController"문제는 고정되어 있습니다. 클릭을 할 수 없었습니다. 어떤 도움이 필요합니까?

흐름을 설명하려면 -> "help"라는 이름의 버튼이 하나있는 메뉴 화면이 있습니다 ->이 도움말 버튼을 클릭하면 첫 번째 코드가 실행되고 HelpViewController -> Help , 사용자가 "완료"버튼을 클릭합니다 -> HelpViewController를 닫고 "메뉴"화면으로 이동해야합니다.

+1

[self.view removeFromSuperview]; . 그 추악한. 대리자 예보기를 사용하여 다시 참조 전략을 제거합니다. – Tirth

+0

@Tirth : 의견을 보내 주셔서 감사합니다! 이 사례에 대한 대의원을 어떻게 활용할 수 있는지에 대한 한 가지 참조로 나를 도울 수 있습니까? 나는 그 사건에 대한 모범을 찾을 수 없었다. – kosa

답변

1

는 InnerHelpViewController.m에서

@protocol InnerHelpViewControllerDelegate 

    -(void)removeCustomView; 
@end 

@interface InnerHelpViewController : UIViewController{ 

} 
@property(nonatomic, weak) id<InnerHelpViewControllerDelegate> delegate. 

이 InnerHelpViewControllerDelegate을 채택 MenuController .H 파일에

@synthesize delegate; 

- (IBAction)unwindToMenuFromInnerHelp:(id)sender { 
    [delegate removeCustomView]; 
} 

파일 InnerHelpViewController.h 파일 클래스에서 프로토콜 메서드를 구현합니다.

@interface MenuController : UIViewController<InnerHelpViewControllerDelegate>{ 

} 

이제 helpviewcontroller 개체 생성 중에 MenuController.m 파일에서 대리인을 확인하십시오.

self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InnerHelpPageViewController"]; 
      self.pageViewController.dataSource = self; 

      InnerHelpViewController *startingViewController = [self viewControllerAtIndex:0]; 
      startingViewController.delegate = self; 
      NSArray *viewControllers = @[startingViewController]; 
      [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

      // Change the size of page view controller 
      self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30); 

      [self addChildViewController:_pageViewController]; 
      [self.view addSubview:_pageViewController.view]; 
      [self.pageViewController didMoveToParentViewController:self]; 

//Implement here delegate method 
    -(void)removeCustomView{ 
     [self.pageViewController removeFromSuperview] 
    } 
+0

감사합니다. 내가 이것을 시도하자. – kosa

+0

예! Thanks @ Tirth – kosa

+0

위임자가 InnerPageViewController의 모든 페이지에 바인딩되지 않는 것 같습니다. 위임자는 "첫 번째"페이지 버튼에서만 호출됩니다. 다음 페이지로 이동하면 "unwind .."메소드가 호출되지만 "delegate"메소드는 호출되지 않습니다. 어떤 제안? – kosa

관련 문제