(iOS开发*)现有一个viewController,present了一个modal view c
(iOS开发*)现有一个viewController,present了一个modalviewcontroller,当modalviewcontroller消失的时候如何把...
(iOS开发*)现有一个viewController,present了一个modal view controller,当modal view controller消失的时候如何把数据传回现有的viewController
展开
3个回答
展开全部
比如你从controller A present了controller B,在B dismiss的时候,把B的一个属性x传给A:
首先在A中需要一个接收器,用来接收从B传回来的值,实际上就是给A添加一个属性,类型和x一样,比如如果x是NSString,那么在A中增加一个NSString类型的属性,取名为y,然后在B中需要一个指向A的指针,在iOS中,我们喜欢把这个指针叫做代理(或者委托),所以在B中添加一个属性:@property (nonatomic, assign) A类名 * delegate,这里一定要用assign或者weak,不然会造成循环引用。
准备工作做完了。在A中初始化B的时候,设置delegate:B.delegate = self。
这样就关联起来了,然后在B中,dismiss的时候(或者在completion的block里面),把你要传的那个属性传给delegate:self.delegate.y = x;
大功告成。
关于代理,你可以去搜索一下协议-代理设计模式,这是iOS开发中用的比较多的一种模式,是iOS的一种回调机制。
首先在A中需要一个接收器,用来接收从B传回来的值,实际上就是给A添加一个属性,类型和x一样,比如如果x是NSString,那么在A中增加一个NSString类型的属性,取名为y,然后在B中需要一个指向A的指针,在iOS中,我们喜欢把这个指针叫做代理(或者委托),所以在B中添加一个属性:@property (nonatomic, assign) A类名 * delegate,这里一定要用assign或者weak,不然会造成循环引用。
准备工作做完了。在A中初始化B的时候,设置delegate:B.delegate = self。
这样就关联起来了,然后在B中,dismiss的时候(或者在completion的block里面),把你要传的那个属性传给delegate:self.delegate.y = x;
大功告成。
关于代理,你可以去搜索一下协议-代理设计模式,这是iOS开发中用的比较多的一种模式,是iOS的一种回调机制。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询