iOS下用Storyboard怎么加个引导屏

iOS下用Storyboard怎么加个引导屏,第1张

由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我也追随时尚,直接开始使用storyboard。(不料在涉及到页面跳转的时候,遇到的问题是:点击后没有任何反应)众所周知,在storyboard中,界面的跳转是通过segue来实现的,利用它,省去了方法内写入跳转的代码。

一 视图跳转

《StoryBoard下的视图跳转》

我们知道:segue共有三种类型:push,modal,和custom。

简单说下这三个的作用:使用导航栏压进新的控制器(push),模态的加载视图控制器(modal),自定义(custom)。

好了,废话少说,现在开始我们的旅行。

1,首先建立一个Single View 模板的项目,记得勾选上storyboard。然后打开它,在rootViewController(也就是我们的主视图)添加一些label和一个button。

2,在右边的库中拖入一个ViewController,也添加一个Label。具体如下图所示://02

3,选中button,右键(或control+鼠标左键)拖拽到第二个ViewController中,选择:Modal,然后记得save。这个时候,运行模拟器,点击button,你会发现成功跳转到了第二个界面。我们没有在代码区做任何 *** 作,甚至连button和第二个ViewController都没有创建,确实就是这么的简单。//03

好了,到了这里,简单说一下storyboard下,利用segue界面跳转一共有两种方式:

第一种就是以上我的例子,利用button组件,拖拽添加segue,直接运行就可以用。

第二种是利用ViewController与ViewController之间,拖拽添加segue。不过,这种方法就需要在相应需要跳转的方法内写入代码,手动去设置它的跳转。

4,把刚才例子设置button的segue删除(右键,点X),一切恢复了最初时的状态,我们给buttom添加一个点击的方法,然后在ViewController.m中实现此方法,在方法体内写入这样的代码://04

5,注意看方法参数:@"second",这个second是我自命名的一个标示符,一会你就会遇到。

6,save保存,打开storyboard,选中rootViewController,右键拖拽到第二个ViewController,在d出的界面同样选择:modal。//05

7,打开这个segue的设置页面:设置其identifier为second,就是我在代码中的那个自命名参数。

8,save保存,运行模拟器,你会惊奇的发现,实现了同样的跳转。

到现在为止,我们一共用两种简单的方式实现了视图的跳转:1是设置button的segue,2是设置viewcontroller与viewcontroller之间的segue,只是后者需要在代码中手动管理跳转。

看似很简单的事情,却让我耽误一些时间,主要是因为我在网上看的好多例子都是以UINavigationController为rootviewController(这样省事省时,跳转后还可以利用系统为我们创建的返回按钮返回到rootViewController),然后用button拖拽到第二个视图时选择的push,由于当时不理解push相关的类型含义,所以在写的时候,我总是选择push,造就了点击后无法跳转。现在终于明朗了,记录下来,供不明白的同学学习。

----------------------------------------------------------------------------------------------------

//根据 segue Identifier跳转界面

[self performSegueWithIdentifier:@"GotoTwo" sender:self]

//以modal 方式跳转

[self presentModalViewController:nil animated:YES]

//压进一个viewcontroller

[self.navigationController pushViewController:nil animated:YES]

//d出一个viewcontroller 相当与返回上一个界面

[self.navigationController popViewControllerAnimated:YES]

// 以 modal跳转的返回方法

[self dismissModalViewControllerAnimated:YES]

-----------------------------------------------------------------------------------------------------

再写一下关于segue三个类型的详解:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的。

在iphone中,segue有:push,modal,和custom三种不同的类型,这些类型的区别在与新页面出现的方式。

而在ipad中,有push,modal,popover,replace和custom五种不同的类型。

modal

最常用的场景,新的场景完全盖住了旧的那个。用户无法再与上一个场景交互,除非他们先关闭这个场景。

是在viewController中的标准切换的方式,包括淡出什么的,可以选切换动画。

Modalview:就是会d出一个view,你只能在该view上 *** 作,而不能切换到其他view,除非你关闭了modalview.

Modal View对应的segue type就是modal segue。

*Modal:Transition to another scene for the purposes of completing a task.当user在d出的modalview里 *** 作完后,就应该dismiss the modal view scene然后切换回the originalview.

push

Push类型一般是需要头一个界面是个Navigation Controller的。

是在navigation View Controller中下一级时使用的那种从右侧划入的方式

*Push:Create a chain of scenes where the user can move forward or back.该segue type是和navigation viewcontrollers一起使用。

popover(iPad only)

popover 类型,就是采用浮动窗的形式把新页面展示出来

*Popover(iPad only):Displays the scene in a pop-up “window” over top of the current view.

Replace (iPad only):

替换当前scene,

Replace the current scene with another. This is used in some specialized iPad viewcontrollers (e.g. split-view controller).

custom

就是自定义跳转方式啦。

App启动时会根据用户是否已经登录来判断加载哪个界面,但是storyboard只能指定一个初始化界面。

我的解决办法是这样的:

1.拖一个navigationController到StoryBoard里,然后设置这个navigationController为initial view controller

2.为上图中的rootViewController创建一个对应的类,并在里面的viewDidLoad方法里添加如下语句

// 获取storyboard

var storyBoard = UIStoryboard(name: "Main", bundle: nil)

// 隐藏导航栏

self.navigationController!.navigationBarHidden = true

// 判断用户是否已经登录

if NSUserDefaults.standardUserDefaults().boolForKey("login") {

// 如果已经登录,则加载主界面

var mainTabController = storyBoard.instantiateViewControllerWithIdentifier("main") as UITabBarController

self.navigationController?.pushViewController(mainTabController, animated: false)

} else {

// 如果没有登录,就加载登录界面

var loginController = storyBoard.instantiateViewControllerWithIdentifier("login") as UIViewController

self.navigationController?.pushViewController(loginController, animated: false)

}

注意这里面的instantiateViewControllerWithIdentifier("login")方法,这个方法是根据storyboard里面controller的identifier来获取视图控制器的,通过上面的语句可以看出login是注册界面的试图控制器,main是主界面的试图控制器,设置identifier是在storyboard中选中你要设置的视图控制器,然后在右侧identity里面的storyboard里设置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7968427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存