ios开发跳转界面,ios 跳转
iOS界面之间的跳转方式
iOS界面之间的跳转方式基本有3种。
创新互联-专业网站定制、快速模板网站建设、高性价比南平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南平地区。费用合理售后完善,十余年实体公司更值得信赖。
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开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等。在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个Prefs值,如下图:
需要设置Prefs
设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。
当iOS系统版本 iOS 10.0 时
当iOS系统版本 =iOS 10.0 时
当 iOS系统版本 = iOS7时 , 只能跳转到 系统设置页面
当 iOS系统版本 = iOS8 ,支持跳转到第三方应用的设置界面中
使用prefs:root=bundleID ,bundleID是你第三方应用工程的唯一ID
局限性:只支持iOS8,iOS9系统,在iOS10系统上,不会跳转。
在iOS7系统上,仅仅只是跳转到设置应用,不推荐使用。
UIApplicationOpenSettingsURLString字段,是在iOS8上才提供的,支持iOS8,iOS9,iOS10系统,推荐使用。
跳转。
而 prefs:root=bundleID和 prefs:root=服务 都将不起作用。
方式一:prefs:root=某项服务 适用于 小于 iOS10的系统;
方式二:prefs:root=bundleID 适用于 大于等于iOS8系统,小于iOS10的系统
方式三:UIApplicationOpenSettingsURLString 适用于 大于等于iOS8的系统
iOS 点击推送消息跳转指定界面 —总结篇
收到推送的准备:
ios7.0之前
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
// App 收到推送的通知
ios 8 - 10 点击本地推送 触发的方法
*iOS 8 - 10 点击远程消息推送 *
*iOS10 之后点击推送的方法 包括本地推送 *
做消息跳转无外乎是在这几个方法中,但是上面陈述的这些方法都只是针对系统版本做的分类,对于跳转我们还要考虑下其他情况,点击消息跳转到指定的界面,这个时候要分3种情况
app 在前台(转本地推送)
=======
我用的是个推的,在收到个推的透传消息时候会走这个代理方法,判断如果在前台的时候就转成本地推送
这个是转成本地推送的方法,当然对于里面数据的转换你要根据你们的业务需求和后台的返回情况做转化,因为你在之后点击本地推送的时候还是要根据你转本地推送所传的值进行对应的跳转的
- (void)requestLocationNotification:(NSDictionary *)payData{
app 在前台的时候当接收到消息推送的时候,如果你不做任何处理默认是不会有提示的,一般的处理方式就是透传的消息转化成本地消息推送,然后当用户点击的时候做相应的跳转,当然也有可以直接做弹窗提醒,然后做对应的处理。
iOS 10之前
iOS 10 之后
iOS 7之前
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
iOS 8 - 10
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
ios 10之后
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler
这个时候你会发现 前台后台的时候走的可能是一个方法,在这里我们就要在方法中做下区分
希望这篇文章能够帮到你,总结的有点乱,有疑问的地方欢迎留言。
IOS 页面跳转方法总结
尝试列出所有的页面跳转方法,有疏漏的欢迎补充。
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开发跳转界面,ios 跳转
URL标题:http://ybzwz.com/article/hoessc.html