首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

iOS怎么利用Delegate来实现两个UIView之间的传值

2012-07-26 
iOS如何利用Delegate来实现两个UIView之间的传值?From:http://blog.csdn.net/whaomian/article/details/68

iOS如何利用Delegate来实现两个UIView之间的传值

?

From:http://blog.csdn.net/whaomian/article/details/6802162

个View之间的传值可以有多种方式。但本人觉得最合理最自然并且最安全的方式是通过Delegate方式。

设想一个场景:

1. 有两个View,分别是A和B。

2. 点击A中的某个按钮,出来B。

3. 对B做某些操作(比如输入文字到textField,选择picker等等)。

4. 然后点击B中的确定按钮,将在B中进行的操作所产生的数据传递给A。

这种应用场景在编写iPhone App应用的时候是十分常见的,比如利用modelview来进行某些条件的选择,进行注册操作等等。下面具体说说利用Delegate是如何将View B中的数据传递回View A。

第一步:

在B类的类定义之前加入一下代码,定义一个delegate:

?

//返回View?A??
  • }??


    上面代码注意两个问题:第一是调用view A的实现了delegate的方法,第二是将自身的指针传递给view A的方法,以方便view A能取到view B的数据。

    ?

    以上就是整个利用delegate机制来进行两个view之间的传值的过程。这里注意一点:这两个view之间是有关系的(view A推出view B,从view B推出view A)。对于两个完全没有关系的view,如何传值呢?理论上利用delegate也是可以的,但并不是最好的方法。最好的方法是利用NSNotification,留到日后再说。

    多嘴一点,其实说是利用delegate的方式来传值,其本质是传递类的指针来进行类成员的传值(实现了delegate的类A将自身传给了类B,然后类B又将自身传回去给类A),之所以用到delegate的机制,只不过是为了说明这个顺序:当B进行了某个操作的时候,需要A去做另外一件事。这就是delegate的本质。也就是我文章开头所说“最合理最自然”的原因。

  • 热点排行