iOS - 代理协议,正向或逆向传值,属性传值的简单实用
2016-12-02 08:40
260 查看
本来今天准备写照片的多选和相机的调用自定义,但是突然想到代理和协议这两个东西,觉得有必要写一下
代理和协议,一听感觉很高大上,以至于在学习之初,我都不敢用这个东西,觉得是高手必备,菜鸟仰望的东西,只是后来偶然的一次看到了关于代理协议的代码,觉得这他么是协议,握草,好好使啊,就开始自己写简单的协议。
if(你想直接看代码){
#import <UIKit/UIKit.h>
@protocol DLdelegate <NSObject>
- (void)DelegatemakeSureToopen;
- (void)DelegateCancel;
- (void)DelegateService;
@end
@interface TipBoom : UIView
@property (nonatomic,strong)id <DLdelegate>QLdelegate;
@end
然后在点击或者触发事件中调用
-(void)fuwu{
[self.QLdelegate
DelegateService];
}
- (void)makesure{
[self
removeFromSuperview];
[self.QLdelegate
DelegatemakeSureToopen];
}
- (void)cancelview{
[self
removeFromSuperview];
[self.QLdelegate
DelegateCancel];
}
这样一看,不还是跟属性有关么,觉得也是那么一回事,当然,这是我刚接触代理的时候想的,其实有很多的点还没到,我写这个只是把最简单的代理写出来。
}else{
关于代理,其实我自己的看法很简单,你用过tabview么,你为什么要写tabview的两个代理,走他们的代理方法,虽然你不懂,但你觉得要这么做,因为方便。
那你觉得为什么代理会走这个方法呢,因为代理的方法有required和optional两种,就像正餐和零食一样,都是食物(方法),但你不吃零食可以,不吃正餐你就会饿,
代理可以传值就是执行的方法可以传递参数,你可以传递过去一个dictionary或者array,interger,float,string都可以。
}
2.逆向正向传值
正向传值大家都会属性传值,preseg,通知(这玩意建了还要取消,一开始我不知道取消,建了一个demo放手机上运行,就算删了,只要有个bundleid一样的app运行的话,那个本地通知就一直响,烦人)。
我说一下逆向传值吧,就是代理,通知还有是通过一种方法(我喜欢用的)传值【喜欢的方法:】
- (void)leftClick{
MyOrderViewController* oneVC =nil;
for(UIViewController* VC
in self.navigationController.viewControllers){
if([VC
isKindOfClass:[MyOrderViewController
class]]){
oneVC =(MyOrderViewController *) VC;
if (self.type==0)
{
oneVC.daifukuan = [NSString
stringWithFormat:@"1"];
}else
if (self.type==1){
oneVC.daifahuo = [NSString
stringWithFormat:@"1"];
}else
if (self.type==2){
oneVC.daishouhuo = [NSString
stringWithFormat:@"1"];
}else
if (self.type==3){
oneVC.jiayichenggong = [NSString
stringWithFormat:@"1"];
}else
if (self.type==4){
oneVC.tuihuostatus = [NSString
stringWithFormat:@"1"];
}
[self.navigationController
popToViewController:oneVC
animated:YES];
}
}
}
这是因为控制器的push是以压栈的方式压进去的,就像一个电梯,比如有12层,12层的先进去,他按12层,2层的最后进去,他按2层,但是2层的最先出来,最后当你push到一个界面的时候,上个界面在你控制器的数组里,应该位于数组的最后的一个位置,你就可以get它了,在接下来就是属性传值了。其实这个也是属性传值,只是你要先获取到你要传值的controller。
代理和协议,一听感觉很高大上,以至于在学习之初,我都不敢用这个东西,觉得是高手必备,菜鸟仰望的东西,只是后来偶然的一次看到了关于代理协议的代码,觉得这他么是协议,握草,好好使啊,就开始自己写简单的协议。
if(你想直接看代码){
#import <UIKit/UIKit.h>
@protocol DLdelegate <NSObject>
- (void)DelegatemakeSureToopen;
- (void)DelegateCancel;
- (void)DelegateService;
@end
@interface TipBoom : UIView
@property (nonatomic,strong)id <DLdelegate>QLdelegate;
@end
然后在点击或者触发事件中调用
-(void)fuwu{
[self.QLdelegate
DelegateService];
}
- (void)makesure{
[self
removeFromSuperview];
[self.QLdelegate
DelegatemakeSureToopen];
}
- (void)cancelview{
[self
removeFromSuperview];
[self.QLdelegate
DelegateCancel];
}
这样一看,不还是跟属性有关么,觉得也是那么一回事,当然,这是我刚接触代理的时候想的,其实有很多的点还没到,我写这个只是把最简单的代理写出来。
}else{
关于代理,其实我自己的看法很简单,你用过tabview么,你为什么要写tabview的两个代理,走他们的代理方法,虽然你不懂,但你觉得要这么做,因为方便。
那你觉得为什么代理会走这个方法呢,因为代理的方法有required和optional两种,就像正餐和零食一样,都是食物(方法),但你不吃零食可以,不吃正餐你就会饿,
代理可以传值就是执行的方法可以传递参数,你可以传递过去一个dictionary或者array,interger,float,string都可以。
}
2.逆向正向传值
正向传值大家都会属性传值,preseg,通知(这玩意建了还要取消,一开始我不知道取消,建了一个demo放手机上运行,就算删了,只要有个bundleid一样的app运行的话,那个本地通知就一直响,烦人)。
我说一下逆向传值吧,就是代理,通知还有是通过一种方法(我喜欢用的)传值【喜欢的方法:】
- (void)leftClick{
MyOrderViewController* oneVC =nil;
for(UIViewController* VC
in self.navigationController.viewControllers){
if([VC
isKindOfClass:[MyOrderViewController
class]]){
oneVC =(MyOrderViewController *) VC;
if (self.type==0)
{
oneVC.daifukuan = [NSString
stringWithFormat:@"1"];
}else
if (self.type==1){
oneVC.daifahuo = [NSString
stringWithFormat:@"1"];
}else
if (self.type==2){
oneVC.daishouhuo = [NSString
stringWithFormat:@"1"];
}else
if (self.type==3){
oneVC.jiayichenggong = [NSString
stringWithFormat:@"1"];
}else
if (self.type==4){
oneVC.tuihuostatus = [NSString
stringWithFormat:@"1"];
}
[self.navigationController
popToViewController:oneVC
animated:YES];
}
}
}
这是因为控制器的push是以压栈的方式压进去的,就像一个电梯,比如有12层,12层的先进去,他按12层,2层的最后进去,他按2层,但是2层的最先出来,最后当你push到一个界面的时候,上个界面在你控制器的数组里,应该位于数组的最后的一个位置,你就可以get它了,在接下来就是属性传值了。其实这个也是属性传值,只是你要先获取到你要传值的controller。
相关文章推荐
- ios代理的使用,正向传值,逆向传值
- IOS学习笔记(页面传值:属性传值,协议代理传值,闭包传值)
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- iOS开发利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- iOS 开发之协议-代理传值
- ios 页面之间的传值:属性传值,代理传值,block传值
- iOS 页面间传值 之 属性传值,代理传值
- iOS边练边学--UIScrollView的属性简单使用,代理的简单介绍以及内容缩放
- iOS ---属性传值--正向界面传值
- iOS史上最全界面跳转传值总结及分析-包括属性传值、代理传值、通知传值、单例传值、代码块传值
- iOS简单代理反向传值
- iOS-OC-iOS传值大全(代理传值,block 传值,单例传值,通知传值,属性传值)
- iOS (页面间传值)协议和代理的使用 protocol delegate
- iOS 界面间的传值 属性传值 代理传值
- iOS 页面间传值 之 属性传值,代理传值
- iOS开发之协议:代理传值
- iOS 简单理解协议代理的执行原理
- iOS 开发之协议-代理传值
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值