storyboard总结

来源:互联网 发布:网络说的生煎什么意思 编辑:程序博客网 时间:2024/05/20 23:03

   IOS开发中,UI的实现可以使用纯代码的方式,后来可以直接在xcode中编辑xib文件,每个xib文件对应一个view显示,再后来就是stroryboard这个强大的功能了,相比前面两种构建UI的方式,stroryboard有自己的优势。

        首先,stroryboard展示了应用中所有视图在概念上的预览以及视图间的衔接关系,有点流程设计图的味道,或者也可以当做是app demo来理解,这样的话,就比单独的xib文件理解程序的流程清晰多了,更别提代码的方式了;其次,storyboard中视图间的切换变得更加简单,不需要代码就可方便实现。它通过叫做"segues"的转化,定义push,model等切换方式,同时还可以指定切换中使用的动画类型。如果是代码方式或者nib文件,则需要在代码中使用[[viewController alloc]init]或者[self.navigationController pushViewController:(UIViewController *)view animated:YES>]等方式实现切换;另外storyboard对表格控制器的支持更加完美,它定义新的cell原型,以及静态cell的特性,这方面的知识可以单独总结。但是storyboard带来一个问题,就是在团队开发中,如果划分模块的话,得把UI部分排除,单独把m、c进行划分,v一个人完成框架,否则同步是个问题。

下面总结下storyboard中视图如何切换,以及在切换过程中数据如何传递。

一、视图切换

ios中有四种视图包含关系,包括tab、导航、page、splite,在iPhone开发中,常用的是tab和导航。这两种包含关系,可以通过在控件面板直接拖动对应的viewController来实现(比如Tab bar controller, navigation controller);还有种方法就是,先拖动普通的view controller,然后给该view controller添加包含关系(Editor -> Embed in -> navigation controller/Tab bar controller)。那么不同的视图相互切换又是怎样的呢?

前后视图的切换一个是push,一个是model。push的话,会自动添加导航条,实现返回上层视图,它多用于查看信息或者编辑信息,方便返回。model的话,多用于添加新的信息。


 


二、视图传递数据

传递数据包括:(1)从父视图向子视图传递初始化数据(2)子视图返回后,将数据传递给父视图 (3)子视图返回,子视图的关闭。

在IOS中,delegate是个很重要的设计模式,父视图感知子视图的变化,都是通过delegate来实现的,这里也不例外。其实delegate的思想,跟win32中得callback大同小异,方便模块化设计,被调用模块预留callback的定义,然后调用模块实现,达到模块的低耦合,同时又能达到接口和实现的分离。

从父视图向子视图传递数据,在prepareForSegue方法中实现,同时设置子视图的delegate。

当需要从子视图返回时,通过delete,把数据传回。

(1)model方式,关闭子视图使用dismissViewController方法。

(2) push方式,关闭子视图使用popViewController方法。

0 0
原创粉丝点击