繁体   English   中英

问:如何在iOS中强制销毁ViewController?

[英]Q:How to force destroy a viewcontroller in iOS?

是否可以在iOS中回收/强制销毁UIViewController

我正在使用这个github项目来获取自定义UIViewControllerTransition

这是程序的流程:

  • vc1呈现给nav到该rootVcvc2
  • vc2有一个UIButton 单击后, vc2NavigatioCcontroller将关闭。

但问题是, vc2不是由OS回收,所以当我进展到vc1 ,然后呈现给nav (这rootVcvc2 ), vc2不会调用viewDidLoad的方法。

不知道问题出在哪里。 有没有一种方法,当我单击vc2UIButton ,强制销毁navvc2 这样,当我再呈现到navvc2viewDidload将会再次调用。

代码

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];

};

关闭nav ,必须将其挂在参考上,以便以后可以重新显示。 并且由于nav持有对vc2的引用,因此当您重新显示nav时,您会再次获得相同的实例。

您有两个选择。 一种,您可以在关闭nav后释放对nav的引用,然后再释放vc2 第二,您可以将每次vc2出现时要运行的代码从viewDidLoad移到viewDidAppear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM