iOS每日一记————————简单的实现委托 Block代码块 功能 和简单的自定义View
来源:互联网 发布:docker连接外部数据库 编辑:程序博客网 时间:2024/04/18 21:20
╮(╯▽╰)╭。。。。
MVC我的理解并不是特别深入 只能理解其中的一点点东西 ,,,,V需要从C中 剥离出来 其实说白了 就像Xib创建一样 Xib你创建了之后 可以在上面托各种控件 其实那个Xib文件就相当于View 只是用来视图显示的 之后你拖了Xib 控件之后是不是要连线呢 而且会自动生成IBout @property(nonatomic,weak) 之所以用weak 那是因为当前主view自动对ib创建的控件自动添加强引用 所以你不需要用strong。。。。 当年创建Button 的时候是不是可以连线生成方法呢 那其实就类似于 你自己创建个butoon 给他写个委托 或者 block 恩 通知也是可以的 从而实现对C的通信
自定义的Uiview里面的.h文件
#import <UIKit/UIKit.h>
@protocol TestViewDelegate <NSObject>//声明一个代理
@optional
- (void)toRemove;//代理方法
@end
@interface TestView : UIView
@property (nonatomic,copy)void(^ClickBlock)(NSString *str);//传值得block
@property (nonatomic,assign) id<TestViewDelegate>delegate;
@end
@protocol TestViewDelegate <NSObject>//声明一个代理
@optional
- (void)toRemove;//代理方法
@end
@interface TestView : UIView
@property (nonatomic,copy)void(^ClickBlock)(NSString *str);//传值得block
@property (nonatomic,assign) id<TestViewDelegate>delegate;
@end
自定义View里面的.h文件
#import "TestView.h"
@interface TestView()<UIGestureRecognizerDelegate>
{
NSInteger count;
}
@property (nonatomic,strong) UIView *clickView;
@end
@implementation TestView
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self.clickView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 150, 150)];
self.clickView.backgroundColor = [UIColor redColor];
self.clickView.userInteractionEnabled = YES;
[self addSubview:self.clickView];
UITapGestureRecognizer *GestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(GestureRecognizer)];
[self.clickView addGestureRecognizer:GestureRecognizer];
}
return self;
}
- (void)GestureRecognizer{
if (count%2==0) {
if ([self.delegate respondsToSelector:@selector(toRemove)]) {
[self.delegate toRemove];
}
} else{
self.ClickBlock(@"");
}
count++;
}
@interface TestView()<UIGestureRecognizerDelegate>
{
NSInteger count;
}
@property (nonatomic,strong) UIView *clickView;
@end
@implementation TestView
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self.clickView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 150, 150)];
self.clickView.backgroundColor = [UIColor redColor];
self.clickView.userInteractionEnabled = YES;
[self addSubview:self.clickView];
UITapGestureRecognizer *GestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(GestureRecognizer)];
[self.clickView addGestureRecognizer:GestureRecognizer];
}
return self;
}
- (void)GestureRecognizer{
if (count%2==0) {
if ([self.delegate respondsToSelector:@selector(toRemove)]) {
[self.delegate toRemove];
}
} else{
self.ClickBlock(@"");
}
count++;
}
VC里面的.m文件
#import "ViewController.h"
#import "TestView.h"
@interface ViewController ()<TestViewDelegate>//实现自定义View的代理
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
TestView *VC = [[TestView alloc]initWithFrame:CGRectMake(50, 100, 300, 300)];
VC.backgroundColor = [UIColor blueColor];
VC.ClickBlock = ^(NSString *str){
self.view.backgroundColor = [UIColor greenColor];
};
VC.delegate =self;//声明代理的对象是谁
[self.view addSubview:VC];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)toRemove{
self.view.backgroundColor = [UIColor blackColor];
}
#import "TestView.h"
@interface ViewController ()<TestViewDelegate>//实现自定义View的代理
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
TestView *VC = [[TestView alloc]initWithFrame:CGRectMake(50, 100, 300, 300)];
VC.backgroundColor = [UIColor blueColor];
VC.ClickBlock = ^(NSString *str){
self.view.backgroundColor = [UIColor greenColor];
};
VC.delegate =self;//声明代理的对象是谁
[self.view addSubview:VC];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)toRemove{
self.view.backgroundColor = [UIColor blackColor];
}
0 0
- iOS每日一记————————简单的实现委托 Block代码块 功能 和简单的自定义View
- 使用Block块取代代理功能——代码验证之自定义控件的实现
- iOS——简单的自定义view
- 自定义组件的简单使用—View
- iOS每日一记——————之简单的去重操作。。。。
- IOS Block代码块的简单使用
- IOS Block代码块的简单使用
- 自定义View的简单尝试——自定义日历视图
- 每日一省之————利用数组和链表实现一个简单的HashMap
- 每日一省————链表之栈的简单实现
- 每日一省————链表之队列的简单实现
- [ios开发基础之]代码块 ——block
- IOS学习第六篇——代码块(block)
- iOS每日一记之———————复制 粘贴 转发功能的实现
- 简单视线委托 block 和简单自定义view
- MUBlockDelegate——一个基于Block的通用委托实现
- iOS每日一记之——————————基于Socket的简单封装和使用
- IOS系列——ScrollView大放大和缩小功能的简单实现
- git 指定目录
- 学习记录-Qt MDI子窗口显示大小调整
- bootstrap- 用google prettify让代码高亮
- clEnqueueNDRangeKernel()的各参数意义以及相关注意事项
- java的位运算符
- iOS每日一记————————简单的实现委托 Block代码块 功能 和简单的自定义View
- C# 实现像QQ一样隐藏窗体
- SpringBoot
- Android动态设置多语言
- Android之Eclipse下面如何看Android源代码
- 标准C++中的string类的用法总结
- Android ToolBar+Translucent System Bar的用法
- Global and Local Variables
- AIX密码丢失重置过程