大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说html仿微信app界面_苹果微信不跳转对话框,希望您对编程的造诣更进一步.
在之前写聊天项目的时候遇到了这个问题,在微信中我们可以:从联系人界面跳到详情页面再发起聊天,在聊天界面返回时返回到消息列表界面
这个问题困扰了我很久,这和项目的结构有关,在最初我们的项目结构是如下图这样的:
这样我们的每一个VC都有自己的导航,经过各种实验,在这情况下,从tabbarController的一个VC跳出去,再跳回tabbarController的另一个VC显然是不行的(主要是右滑返回很难做到)
所有我就思考,在tabbarController上再加一个导航,平时用VC自己的导航做跳转,在通过联系人详情页跳到聊天界面时用tabbarController的导航做跳转,这样就可以做到微信中的跳转逻辑了,就像下图这样的结构:
通过这种方式有个缺点,我们需要管理2个导航,而且在使用外层的导航做跳转时,跳转动画也和原生的导航跳转动画不一样。这也是我项目中目前使用的方法,当时使用这种方法实现之后也没有多想,以至于后来遇到了很多坑,这里也不多说了
最近我才想到其实我们可以吧VC的导航去掉,全部使用tabbarController的导航做跳转,这样就会简单很多,而且会避免很多坑,就像下图这种结构:
这种结构的实现我没有用在实际项目中,主要是我原来的项目改起来很麻烦,我就懒得改了,我这里写了一个Demo测试了一下,效果很好,所以写这篇文章来记录一下,如果你还有更好的实现的方式,可以在下面留言,我在这里先谢谢了
- 首先创建一个UITabBarController的子类
// 将TabBarController写成单例类,因为我们需要全局取到它,并设置它的选中VC static ViewController *shareInstance = nil; +(ViewController *)sharedInstance{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (shareInstance == nil) { shareInstance = [[ViewController alloc]init]; } }); return shareInstance; }
- 注意这时在TabBarController中的VC的导航的标题的设置方式发生了改变,我们需要通过下面的方法设置title
// 设置标题 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; // 这里取到TabBarController,再设置它的标题 [ViewController sharedInstance].title = @"消息"; }
- 跳转到聊天界面代码
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ CCDetailViewController *DVC = [[CCDetailViewController alloc]init]; [self.navigationController pushViewController:DVC animated:YES]; }
- 在聊天界面中
// 视图呈现完成时 -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; // 让TabBarController选中消息列表界面 [[ViewController sharedInstance] setSelectedIndex:0]; // 清除导航栈中的VC,并加入tabbarController和聊天界面,这样在右滑手势时也可直接回到消息列表界面 [self.navigationController setViewControllers:@[[ViewController sharedInstance],self]]; } // 返回按钮点击事件 -(void)backClick:(UIButton *)btn{ [self.navigationController popToRootViewControllerAnimated:YES]; }
附上Demo的地址github.com/cdcyd/Commo…
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13096.html