4 实现:多次push操作

通过重写UINavigationController push方法 实现多次push

import UIKit

class LYNavigationVc: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

          //设置返回边缘手势代理
        self.interactivePopGestureRecognizer?.delegate = self
        

    }
    
    
    //重写push方法
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        
        //导航控制器属性 多个子控件
        print(viewControllers.count)
        //只有一个
        
        super.pushViewController(viewController, animated: animated)
        
        //调用super super之后 才会将子视图添加到导航控制器
        print(viewControllers.count)
        //两个或者多个
        
        if viewControllers.count > 1 {
            
            if viewControllers.count == 2 {
                //获取第一个导航栏里 子视图控制器的标题
                let title = viewControllers[0].title!
                viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(title: title, imageName: "navigationbar_back_withtext", target: self, action: #selector(popAction))
                
            }else{
                //统一改为返回标题
                viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "返回", imageName: "navigationbar_back_withtext", target: self, action: #selector(popAction))
            }
            
            viewController.title = "当前显示的是第\(viewControllers.count)级控制器"
        }
        
        
    }
    

/*    bug:
    界面跳转:阴影
            window设置为白色
            tabbar设置背景图片
 */

    @objc private func popAction() {
        self.popViewController(animated: true)
    }


extension LYNavigationVc : UIGestureRecognizerDelegate {
    
    //是否处理点击的边缘手势
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        
        //根控制器 不处理边缘手势
        if viewControllers.count == 1{
            
            return false
        }
        return true
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,461评论 1 10
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,390评论 30 472
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 8,939评论 2 4
  • 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标...
    VincentHK阅读 10,775评论 3 44
  • 旧铁皮往南开,恋人已不在。 刚开始听陈鸿宇的歌,大概是在高中的时代。那会儿最喜欢听《理想三旬》,也只听他的《理想三...
    靳然阅读 4,804评论 20 5

友情链接更多精彩内容