Can't add self as subview的问题

原因一:加入了本身的视图

[self.view addSubview:self.view];

原因二:重复推出了控制器
下面的方法能复现bug

[self.navigationController pushViewController:set animated:YES];
    //0.3秒后重复推出(正常是0.5)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self.navigationController pushViewController:set animated:YES];
    });

解决:
1.Commond + N 新建Objective-C File文件


张小牛.png

2.UINavigationController+ZXN中添加如下代码

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated isFixed:(id)isFixed{
    if (!isFixed || self.topViewController == isFixed){
        [self pushViewController:viewController animated:animated];
    }
}

- (id)navigationlock{
    return self.topViewController;
}

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated isFixed:(id)isFixed{
    if (!isFixed || self.topViewController == isFixed){
        [self popToViewController:viewController animated:animated];
    }
    return nil;
}

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated navigationLock:(id)isFixed{
    if (!isFixed || self.topViewController == isFixed) {
        [self popToRootViewControllerAnimated:animated];
    }
    return nil;
}

3.用法

id isFixed = [self.navigationController isFixed];
[self.navigationController pushViewController:compet animated:YES isFixed: isFixed];

4.检验

 id isFixed = [self.navigationController isFixed];
[self.navigationController pushViewController:compet animated:YES isFixed: isFixed];
    //0.3秒后重复推出(正常是0.5)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
       [self.navigationController pushViewController:compet animated:YES isFixed: isFixed];
 });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容