欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS中模态Model视图跳转和Push视图跳转的需求实现方法

程序员文章站 2024-02-18 21:09:40
本文给大家分享下模态model视图跳转和push视图跳转的需求实现。   开前自打小广告:一键合成app引导页,包含不同状态下的引导页操作方式,同时支持动态图片引导页和静...

本文给大家分享下模态model视图跳转和push视图跳转的需求实现。

  开前自打小广告:一键合成app引导页,包含不同状态下的引导页操作方式,同时支持动态图片引导页和静态图片引导页以及视频引导页;github地址: https://github.com/dingding3w/dhguidepagehud (多多star,多多支持????);

  (一)连续两次模态model视图之后,然后返回首页(a -> b -> c -> a)

  ①效果图展示:

iOS中模态Model视图跳转和Push视图跳转的需求实现方法

  ②核心代码展示:

/** 在c页面的dismiss方法里面添加一下代码(ios6.0+) */
  if ([self respondstoselector:@selector(presentingviewcontroller)]){
    [self.presentingviewcontroller.presentingviewcontroller dismissviewcontrolleranimated:yes completion:nil];
  }
  else {
    [self.parentviewcontroller.parentviewcontroller dismissviewcontrolleranimated:yes completion:nil];
  }

  (二)在模态model推出的视图中push下一个带导航栏的视图,然后返回首页(a -> b ->c -> a)

  ①效果图展示:

iOS中模态Model视图跳转和Push视图跳转的需求实现方法

  ②核心代码展示:

/** 这里用到的核心处理办法是 */
/** 1.在a控制器模态model推出b控制器的时候先给b控制器包装一个导航控制器 */
uinavigationcontroller *anavigationcontroller = [[uinavigationcontroller alloc] initwithrootviewcontroller:[[bviewcontroller alloc] init]];
[self presentviewcontroller:anavigationcontroller animated:yes completion:nil];
/** 2.在b控制器遵守uinavigationcontrollerdelegate实现代理协议,隐藏当前控制器的导航栏 */
#pragma mark - uinavigationcontrollerdelegate
- (void)navigationcontroller:(uinavigationcontroller *)navigationcontroller willshowviewcontroller:(uiviewcontroller *)viewcontroller animated:(bool)animated {
  // 判断要显示的控制器是否是自身控制器
  bool isshowmycontroller = [viewcontroller iskindofclass:[self class]];
  [self.navigationcontroller setnavigationbarhidden:isshowmycontroller animated:yes];
}
#pragma mark - push出c控制器
[self.navigationcontroller pushviewcontroller:[[cviewcontroller alloc] init] animated:yes];
/** 3.在c控制器里面可直接在返回按钮方法里dismiss */
[self.navigationcontroller dismissviewcontrolleranimated:yes completion:nil];

以上所述是小编给大家介绍的ios中模态model视图跳转和push视图跳转的需求实现方法,希望对大家有所帮助