Ich verwendete OC, um eine Werkzeugklasse anzupassen, ein Knopfwerkzeug zu erstellen, wie man dieses Werkzeug in schnellen Code umwandelt? In Zeile _buttonBlock = [button copy];
Wie kopiert man Benutzer in swift?Wie OC in Swift4 unter Code konvertieren?
ToolView .h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface ToolView : NSObject
+ (instancetype)shendInstance;
- (void)createButtonWithFrame:(CGRect)rect superView:(UIView *)superView buttonBlock:(void(^)(UIButton *button))button;
@end
ToolView.m
#import "ToolView.h"
typedef void(^ButtonBlock)();
@interface ToolView(){
ButtonBlock _buttonBlock;
}
@end
@implementation ToolView
+ (instancetype)shendInstance{
static ToolView *toolview = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
toolview = [[ToolView alloc]init];
});
return toolview;
}
- (void)createButtonWithFrame:(CGRect)rect superView:(UIView *)superView buttonBlock:(void(^)(UIButton *button))button{
_buttonBlock = [button copy];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = rect;
btn.backgroundColor = [UIColor orangeColor];
[btn addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[superView addSubview:btn];
}
- (void)buttonAction:(UIButton *)sender{
if (_buttonBlock) {
_buttonBlock(sender);
}
}
@end
'buttonBlock' ist Taste Selektor Rückruf, nicht UIButton, wie fix zu? –
Indem Sie den Blockparameter als escaping deklarieren, können Sie ihn Ihrer Instanzvariablen zuweisen. Dies ist in * EscapingClosures * enthalten. Verkenne ich, was du fragst? – CRD