block使用的场景是:
1、有关使用代码来写相应的View而不是xib或者storyboard的时候,我们经常需要用到按钮等控件,我们一般可以使用代理或者b‘lock这两种方式来解决。
先看看代理的使用:
//按钮的触发事件,相应的容器方法 reSetPassword
[_serviceLeft addTarget:self action:@selector(reSetPassword) forControlEvents:UIControlEventTouchUpInside];
下面是相应的容器方法:reSetPassword
- (void)reSetPassword { NSLog(@"ghjgk"); [self.rdelegate toResetPass]; //这个是相应的代理方法 }
这样是用的前提就是我们要设置相应的代理声明定义
@protocol RegisterViewDelegate <NSObject> - (void)toResetPass; @end @interface RegisterView : UIView @property (nonatomic,assign) id<RegisterViewDelegate> rdelegate; //定义这个代理遵循的协议 @end
上面的都是在View中完成的,因为这些触发的动作要在Controller中完成,才可以与model等等的数据进行交互,才有意义。
下面是在Controller中的使用
//遵循协议,并定义View的对象
@interface RegisterViewController : UIViewController <RegisterViewDelegate> @property (nonatomic,strong) RegisterView *registerView; @end;
//需要在.m文件中设置代理
self.view = self.registerView;
然后就可以使用在view 中定义的代理方法了。
#pragma mark <RegisterViewDelegate> - (void)toResetPass { NSLog(@"进入Controller界面"); [self.navigationController pushViewController:self.reSetPasswordViewController animated:YES]; } //这里实现了相应的视图逻辑之间的转化。 }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-07 01:47:03