Làm thế nào tôi có thể tạo các phương pháp của riêng mình để lấy một khối làm đối số và tôi có thể gọi nó sau?Làm cách nào tôi có thể tạo các phương thức của riêng mình để lấy một khối làm đối số và tôi có thể gọi nó sau?
Tôi đã thử những điều sau đây.
#import <UIKit/UIKit.h>
typedef void (^viewCreator)(void);
@interface blocks2ViewController : UIViewController
{
}
-(void)createButtonUsingBlocks:(viewCreator *)block;
@end
- (void)viewDidLoad {
[super viewDidLoad];
[self createButtonUsingBlocks:^(NSString * name) {
UIButton *dummyButton = [[UIButton alloc]initWithFrame:CGRectMake(50, 50, 200, 100)];
dummyButton.backgroundColor = [UIColor greenColor];
[self.view addSubview:dummyButton];
}];
}
-(void)createButtonUsingBlocks:(viewCreator *)block
{
// Do something
NSLog(@"inside creator");
}
Tôi cũng đã cố chuyển biến khối vào phương thức tùy chỉnh của mình nhưng không thành công. Tại sao nó là như vậy và cách đúng để làm điều này là gì?
Cập nhật
Đây là tập tin is.h
:
#import <UIKit/UIKit.h>
typedef void (^viewCreator)(void);
@interface blocks2ViewController : UIViewController
{
}
- (void)createButtonUsingBlocks:(viewCreator)block;
@end
Và đây là .m
file:
#import "blocks2ViewController.h"
@implementation blocks2ViewController
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[self createButtonUsingBlocks:^(NSString * name) {
UIButton *dummyButton = [[UIButton alloc]initWithFrame:CGRectMake(50, 50, 200, 100)];
dummyButton.backgroundColor = [UIColor greenColor];
[self.view addSubview:dummyButton];
[dummyButton release];
}];
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
// ...
-(void)createButtonUsingBlocks:(viewCreator)block
{
// viewCreator;
NSLog(@"inside creator");
}
@end
Hãy * thêm cập nhật * thay vì thay đổi câu hỏi ban đầu và kiểm tra định dạng trong chế độ xem trước * trước * gửi bài. –
Bản cập nhật vẫn có vấn đề với typedef - thay đổi 'typedef void (^ viewCreator) (void);' to 'typedef void (^ viewCreator) (NSString *);' –