分享一个关于Storyboard 跳转与传值
写在前面的知识:
因为苹果推Storyboard而且目前来看,AppleWatch也是用Storyboard就知道,明天应用估计都是Storyboard的天下了.
(水平有限,不对之处在所难免,望海涵)
很多人似乎还是在用XIB,对Storyboard如何进行跳转似乎懵懵懂懂...
好吧,鉴于早上群里,有人问怎么跳转,怎么传值等等问题.就做下总结,同时为大家提供一些方法和参考.
***
1.最简单的方法
拖拽,这个就不用多解释了吧.直接拖拽到另一个视图控制器,选择show,就行了.
2.利用Segue方法(这里主要是方法1的传值)
连好线,点击连线中间部分,设置Identifier.
然后调用performSegueWithIdentifier方法.
(注:Demo里面,是直接将TableViewController和SecondViewController进行连线,而不是点击Cell的indicator进行连线)
执行以下方法,就可以进行跳转操作了.
performSegueWithIdentifier("SecondSegue",sender:self)
如何传值?
很简单,需要调用prepareForSegue方法(因为这里是父视图->子视图传值,所以要用destinationViewController)
overridefuncprepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){ vartheSegue=segue.destinationViewControllerasSecondViewController theSegue.text="Pass" }
(注:这里,Swift的自动补全可能失效,所以如果没有出现destinationViewController,没关系往后打.)
这里的text是我在子视图中声明的变量,用来设置Label的值.
PS:
一般,我们都用使用连线的方式,这里告诉大家另一个方式,就是用viewWithTag.我先前在Label控件Tag中设置为100.
当然你也可以使用连线,使用viewWithTag可以在我们自定义Cell的时候方便用到,而不需要创建单独的Cellclass.
3.利用self.storyboard
利用self.storyboard方法,就不需要进行连线,一样可以进行视图之间的跳转.但是必须要设置StoryboardID.
然后利用如下方法进行跳转和传值
varthirdVC= self.storyboard?.instantiateViewControllerWithIdentifier("ThirdViewController") asThirdViewController thirdVC.text="Pass" self.navigationController?.pushViewController(thirdVC,animated:true)
因为是在同一个Storyboard里面进行跳转,所以self.storyboard就可以满足需求.
不明白?看最后一个方法:
4.利用UIStoryboard
XIB方法,我们需要用到nibName,同样如果我们想要分离多个sence在不同的Storyboard里面,怎么办?
这个时候,就不能使用self.storyboard了.
而是:
varstoryboard=UIStoryboard(name:"New",bundle:nil) varnewVC=storyboard.instantiateViewControllerWithIdentifier("NewViewController")asNewViewController newVC.text="Pass" self.navigationController?.pushViewController(newVC,animated:true)
是不是和XIB有异曲同工的感觉,这样就可以把Storyboard分几个,每个里面放几个Sence.
这样的好处就是,当你需要做多个不同功能的模块的应用,分离到不同的Storyboard中,彼此互不影响.
相对于XIB来说,每个文件夹只需要1个Storyboard文件,和Swfit文件就可以了.
以上叙述是小编给大家分享storyboard跳转传值的相关知识,希望大家喜欢。