资讯

精准传达 • 有效沟通

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

ios开发页面跳转页面,ios网页自动跳转

iOS界面之间的跳转方式

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

创新互联公司2013年开创至今,是专业互联网技术服务公司,拥有项目成都网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元墨玉做网站,已为上家服务,为墨玉各地企业和个人服务,联系电话:18982081108

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 页面跳转方法总结

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

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开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者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开发,怎么从一个页面,跳转到首页分栏控制器页面,因为首页需要设置根实图属性,所以一启动就首页

跳转到根视图并跳转到第一个tabbar第一个页面

// 直接跳转到跟视图

self

.navigationController.tabBarController.hidesBottomBarWhenPushed=

NO

;

self

.navigationController.tabBarController.selectedIndex=

;  

//0

// 先跳转到自身tabbar主页,再跳转到第一个tabbar主页 (push出来的走这个方法)

for

(

UIViewController

*vc 

in

self

.navigationController.viewControllers) {

if

([vc isKindOfClass:[TrainingProgramTableViewController 

class

]]) {

[

self

.navigationController.tabBarController setSelectedIndex:

];

[

self

.navigationController popToRootViewControllerAnimated:

NO

];

}

}

iOS 转场动画:以Push方式实现Present跳转

在iOS开发中,页面跳转一般有两种方式:

在SDK开发中,由于需要减小侵入性,通常会使用modal方式弹出SDK的页面,那么默认唤起的动画就是从下到上。现在有一个需求,需要从右到左唤起SDK的页面,所以我们需要用到转场动画,将present的动画改成从右到左,也就是以Push方式实现Present跳转。

实现模态的转场动画的步骤,大概分以下几步:

下面按照这个步骤来实现功能

创建一个类 WBHCPushAnimatedTransition 来封装转场动画

实现系统的 UIViewControllerAnimatedTransitioning 协议

实现present动画,实际就是使用UIView动画来改变 fromVC 和 toVC 的 view 的位置

实现dismiss动画,和上面的present动画相反,将fromVC 和 toVC 的 view 的位置还原

这样,整个转场动画的封装就完成了,下面来实现代理

在要present出来的vc中实现系统代理 UIViewControllerTransitioningDelegate

这样的话,整个功能就基本实现了

但是,体验上还缺少一点:没有侧滑返回。所以,接下来,我们实现侧滑返回的交互转场

创建一个继承自 UIPercentDrivenInteractiveTransition 的类 WBHCPopInteractiveTransition 来封装交互转场

为传入的vc添加拖动手势

拖动手势是加在全屏上的,我们需要将它限制到屏幕左侧,这样才是侧滑返回,否则是全屏返回

核心是处理手势交互转场的过程,我们需要更新转场百分比 updateInteractiveTransition ,标记 完成转场 finishInteractiveTransition 和取消转场 cancelInteractiveTransition

这样,整个交互转场的封装就完成了,下面来实现代理

在要dismiss消失的vc中实现系统代理 UIViewControllerTransitioningDelegate

这样的话,整个侧滑返回的功能就实现了

至此,我们基本上就实现了以Push方式实现Present跳转,同时可以像原生导航一样进行侧滑返回


当前文章:ios开发页面跳转页面,ios网页自动跳转
链接URL:http://cdkjz.cn/article/dsgcsoe.html
多年建站经验

多一份参考,总有益处

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

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

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