0

iOS에서 UIViewController을 재활용/강제로 파괴 할 수 있습니까?Q : iOS에서 뷰 컨트롤러를 강제로 파괴하는 방법

내가 정의 UIViewControllerTransition 얻을이 github project을 사용하고하십시오 nav

  • vc1 선물이 rootVcvc2에서 vc2
  • 되는 : 여기

    은 프로그램의 흐름입니다 UIButton입니다. 클릭하면 vc2NavigatioCcontroller이 (가) 해제됩니다.

하지만 문제가 vc2는 OS에 의해 재생되지 않도록하고, 그래서 (rootVcvc2이다) nav에 다음 본 vc1로 진행하면 vc2viewDidLoad 메소드를 호출하지 않는다.

어디에 문제가 있는지 잘 모릅니다. 내가 vc2UIButton을 클릭하면 강제로 navvc2을 파괴 할 수있는 방법이 있습니까? 이렇게하면 nav에 다시 나타나면 vc2viewDidload이 다시 호출됩니다.

코드 :

vc1에서 : nav를 해제하면 나중에 다시 표시 할 수 있도록

LMLQQSearchSelectViewController *search_vc = [[LMLQQSearchSelectViewController alloc] initWithNibName:@"LMLQQSearchSelectViewController" bundle:nil]; 
search_vc.fromController = @"KnowledgeViewController"; 
search_vc.pre_type = @"ENCYCLOPEDIACOL"; 
LMLQQSearchNavController *nav = [[LMLQQSearchNavController alloc] initWithRootViewController:search_vc]; 
nav.navigationBarHidden = YES; 


__weak typeof(self) weakSelf = self; 

_search_header.block = ^(){ 

    weakSelf.transition = [[HYBEaseInOutTransition alloc] initWithPresented:^(UIViewController *presented, UIViewController *presenting, UIViewController *source, HYBBaseTransition *transition) { 
     HYBEaseInOutTransition *modal = (HYBEaseInOutTransition *)transition; 

     // If you don't specify, it will use default value 
     // Default is NO, if set to YES, it will use spring animation. 
     modal.animatedWithSpring = NO; 
    } dismissed:^(UIViewController *dismissed, HYBBaseTransition *transition) { 
     // do nothing 
    }]; 

    nav.transitioningDelegate = weakSelf.transition; 
    [weakSelf presentViewController:nav animated:YES completion:NULL]; 

}; 

답변

0

, 당신에 대한 참조에 매달려해야합니다. navvc2에 대한 참조를 보유하고 있기 때문에 nav을 다시 표시하면 같은 인스턴스가 다시 나타납니다.

두 가지 옵션이 있습니다. 하나는 해제 한 후 nav에 대한 참조를 해제 할 수 있으며, 그러면 vc2도 해제됩니다. 둘째, vc2viewDidLoad에서 viewDidAppear으로 나타날 때마다 실행하려는 코드를 이동할 수 있습니다.

+0

나는'option 2'에 대해 생각해 봤는데, 그것은 내 프로젝트에서 약간의 문제를 일으키고, 나는 옵션 1에서 테스트를 취할 것이고, 그 방법에서 의미 할 것인가 :'[self.navigationController dismissViewControllerAnimated : YES completion :^{ // 루트 VC를 재설정 하시겠습니까? }]; – aircraft

관련 문제