资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

ios开发界面跳转,ios 模态跳转

IOS 页面跳转方法总结

尝试列出所有的页面跳转方法,有疏漏的欢迎补充。

成都创新互联公司主营双流网站建设的网络公司,主营网站建设方案,成都App制作,双流h5小程序设计搭建,双流网站营销推广欢迎双流等地区企业咨询

1.UINavigationController - push pop (常用)

2.UITabBarController

微信的页面就是一个UITabBarController 和 NavigationController 合用的例子

3.(Modal)UIViewController - presentView

4.addChildViewController

期待补充

iOS实战之页面跳转

假如有多级页面Root-A-B-C的跳转,现需要从C返回到A,做法有如下:

有人可能会说,直接pop两下就好了,like this:

❎错误姿势❌:

可以试一试,要是能达到效果算我输!!!

pop到B以后self.navigationController=nil,可以想想是为什么?(页面pop出去了,导航栏当然也跟着出去了,所以下面这个pop根本不起作用)

✅正确姿势一:

由上面错误姿势得到启发,第二个pop不是不起作用吗,那就让B页面去做pop,通知,代理,block都行

总结:虽然能实现,但是很麻烦,还需要写清动画YES还是NO,不然pop几个都有动画的页面会很突兀。

✅正确姿势二:

利用导航栈的特性,去除导航栈上面的页面

✅正确姿势三:

与第二个类似,但是是从导航栈获取vc

个人推荐使用第三种方法,第二种方法直接去除导航栈上面的页面,怕出现问题,而第三种方式是拿页面(读比写操作安全)。

iOS开发-跳转第三方支付遇到的小问题

1.首先是最常见的微信订单号重复的问题,这里做的操作就是在拿到服务器的订单号之后,APP端随机在后边追加两个字符串,这样就可以避免这个问题.

2.如果服务器生成的订单号过长的话也会调起失败,返回:订单号长度错误.

3.第三个问题相对于前两个来说比较隐蔽,刚跳转到第三方支付之后,不在第三方如:微信,支付宝做任何操作,然后通过双击home键或者点击左上角的方式返回自己的应用,这时候是收不到任何的回调,这样造成的结果就是程序界面仍然停留在收银台页面,这样用户继续点击就会造成重复下单的BUG,是一个比较麻烦的问题.初步想到的解决办法即时性的都不能解决.最后想到了一个稍微讨巧的办法,首先如果这个程序是通过支付跳转到第三方的,就加一个布尔值apinPayGO,当程序从后台进入前台时就发出通知,.经过实际测试,支付的回调实在系统的运行方法之后的,收银台页面在接收到该通知之后,延迟一秒执行方法,判断系统这次从后台进入前台是否经过了支付第三方的回调方法,如果经过了支付第三方的回调方法就不做任务操作,如果没经过第三方的回调方法,证明用户在跳转到第三方时没做任务操作,直接通过iOS系统返回到自己的应用了,这里就把页面跳转到待支付页面,然后开始倒计时!

- (void)applicationWillEnterForeground:(UIApplication*)application{

NSLog(@"EnterForeground");

if(self.apinPayGO) {

NSNotificationCenter*center = [NSNotificationCenterdefaultCenter];

[centerpostNotificationName:@"payReturn"object:nil];

}

}

4.创建订单,支付中间的时间控制问题.

用户点击创建订单,服务器设置一个超时时间十分钟,需要用户在十分钟内完成支付,直接去操作是没什么问题.但是如果不直接操作,第三方的支付超时时间跟服务器订单储存的超时时间不同步,可能出现的情况就是:服务器这边订单已经失效了,但是第三方支付仍可以支付,出现bug.有个预想的处理方法是:支付前进行查询订单操作,服务器返回一个超时时间,然后进行第三方支付时把这个超时时间设置过去.但是在做的过程中又遇到了新的问题:第三方支付的超时时间有限制,支付宝是1min~15d,微信是要大于五分钟.

解决方案: 创建订单 跟调第三方支付创建订单 同时进行,然后第一次支付的时候设置超时时间.

iOS界面之间的跳转方式

iOS界面之间的跳转方式基本有3种。 

1、改变window的根视图

[self.window setRootViewController:VC];

2、模态弹出

[self presentViewController:nextVC  animated:YES completion:nil];//从当前界面到nextVC

[self dismissViewControllerAnimated:YES completion:nil];//从nextVC界面回去

3 用 UINavigationController push 进来和pop回去

[self.navigationController pushViewController:nextVC animated:YES];//从当前界面到nextVC这个界面

[self.navigationController popViewControllerAnimated:YES];//nextVC这个界面回到上一界面[self.navigationController popToRootViewControllerAnimated:YES];//回到根视图界面

//self.navigationController.viewControllers 是一个数组里面存放所有之前push过来的界面,如果想要跳回到指定界面 只需要根据索引值取出响应的界面pop回去

MainViewController *MainVC =self.navigationController.viewControllers[1];    [self.navigationController popToViewController:MainVC animated:YES];


本文标题:ios开发界面跳转,ios 模态跳转
文章路径:http://cdkjz.cn/article/dsdiged.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220