0

iOSでUIViewControllerをリサイクル/強制破壊することはできますか?Q:iOSでビューコントローラを強制的に破壊する方法

私はカスタムUIViewControllerTransition得るために、このgithub projectを使用しています:ここで

は、プログラムの流れです:rootVcvc2vc2

  • あるnavに先の

    • vc1プレゼントUIButtonです。クリックすると、vc2NavigatioCcontrollerは拒否されます。

    は、しかし、問題はvc2はOSによってリサイクルされていないということですので、私は(rootVcvc2ある)navに続い存在vc1、に進行する場合、vc2viewDidLoadメソッドを呼び出すことはありません。

    問題がどこにあるかわかりません。私がvc2UIButtonをクリックすると、強制的にnavvc2を破壊する方法がありますか?このようにして、私がnavに再び現れたら、vc2viewDidloadが再び呼び出されます。

    コードvc1

    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

    navは却下された場合、あなたが後でそれを再表示することができるように、あなたはそれを参照するにぶら下がっている必要があります。 navvc2への参照を保持しているため、navを再表示すると同じインスタンスが再び表示されます。

    2つのオプションがあります。 1つは、解読された後にnavへのあなたの参照を解放することができ、それはvc2を解放するでしょう。 2つ目は、vc2が表示される度に実行するコードをviewDidLoadからviewDidAppearに移動させることです。

    +0

    私はオプション2を考えています。それは私のプロジェクトでいくつかの問題を引き起こします。オプション1でテストを行います。このメソッドではどういう意味ですか?[self.navigationController dismissViewControllerAnimated:YES completion:^ { //ルートVCをリセットしますか? }]; ' – aircraft

    関連する問題