IBAction 数组
Array of IBAction
- (IBAction)buyHouse[6]:(id)sender;
我想通过执行上面显示的操作来制作一个 IBActions
的数组。它不允许我。是否可以制作一个方法数组,如果我想实现它,我只需要这样做。
- (IBAction)buyHouse[3]:(id)sender{
_Price.text = [NSString formatWithString: @"hello"];
}
这个 IBAction
适合很多人 UIButton
。
这是我的第一个问题,所以如果它含糊不清,我真的很抱歉。我对 Objective-C 和这个社区还很陌生。
由于 Objective-C 是如此动态,您只需知道其名称即可调用方法:
MyClass.m:
static NSArray *_methods = nil;
@implementation MyClass
-(id)init
{
self = [super init];
if (self) {
if (!_methods) {
_methods = @[
@"method1:",
@"method2:",
@"method3:"
];
}
}
return self;
}
- (void)callMethod:(NSUInteger)index forSender:(id)sender
{
SEL selector = NSSelectorFromString(_methods[index]);
[self performSelector:selector withObject:sender];
}
- (IBAction)method1:(id)sender
{
}
// etc.
您可以使用块而不是方法。
与 IBAction 签名匹配的块的便捷 typedef。本例中未使用。
typedef void(^IBActionBlock)(id sender);
定义您的一系列操作。数组中的每个条目都是一个块,它将单个对象作为参数。
NSArray *ibActions = @[
^(id sender) {
// 0
},
^(id sender) {
// 1
},
^(id sender) {
// 2
},
^(id sender) {
// 3
},
^(id sender) {
// 4
},
^(id sender) {
// 5
},
];
调用站点示例。
ibActions[2](button);
您可以使用标签并利用 performSelector 来做到这一点:
您可以为按钮分配标签[您可以在 IB 中这样做。那就是索引]
你有一个名为 buyHouseByTag
的 IBAction,然后你会将所有按钮连接到那个方法
你有 buyHouse1, buyHouse2 ....
buyHouseByTag 是您的代理人:
- (IBAction)buyHouseByTag:(id)sender {
NSInteger index = [sender tag];
NSString *method = [NSString stringWithFormat:@"buyHouse%d:", index];
SEL sel = NSSelectorFromString(method)
[self performSelector:sel withObject:sender];
}
- (IBAction)buyHouse0:(id)sender {
}
- (IBAction)buyHouse1:(id)sender {
}
- (IBAction)buyHouse2:(id)sender {
}
- (IBAction)buyHouse[6]:(id)sender;
我想通过执行上面显示的操作来制作一个 IBActions
的数组。它不允许我。是否可以制作一个方法数组,如果我想实现它,我只需要这样做。
- (IBAction)buyHouse[3]:(id)sender{
_Price.text = [NSString formatWithString: @"hello"];
}
这个 IBAction
适合很多人 UIButton
。
这是我的第一个问题,所以如果它含糊不清,我真的很抱歉。我对 Objective-C 和这个社区还很陌生。
由于 Objective-C 是如此动态,您只需知道其名称即可调用方法:
MyClass.m:
static NSArray *_methods = nil;
@implementation MyClass
-(id)init
{
self = [super init];
if (self) {
if (!_methods) {
_methods = @[
@"method1:",
@"method2:",
@"method3:"
];
}
}
return self;
}
- (void)callMethod:(NSUInteger)index forSender:(id)sender
{
SEL selector = NSSelectorFromString(_methods[index]);
[self performSelector:selector withObject:sender];
}
- (IBAction)method1:(id)sender
{
}
// etc.
您可以使用块而不是方法。
与 IBAction 签名匹配的块的便捷 typedef。本例中未使用。
typedef void(^IBActionBlock)(id sender);
定义您的一系列操作。数组中的每个条目都是一个块,它将单个对象作为参数。
NSArray *ibActions = @[
^(id sender) {
// 0
},
^(id sender) {
// 1
},
^(id sender) {
// 2
},
^(id sender) {
// 3
},
^(id sender) {
// 4
},
^(id sender) {
// 5
},
];
调用站点示例。
ibActions[2](button);
您可以使用标签并利用 performSelector 来做到这一点:
您可以为按钮分配标签[您可以在 IB 中这样做。那就是索引]
你有一个名为
buyHouseByTag
的 IBAction,然后你会将所有按钮连接到那个方法你有 buyHouse1, buyHouse2 ....
buyHouseByTag 是您的代理人:
- (IBAction)buyHouseByTag:(id)sender {
NSInteger index = [sender tag];
NSString *method = [NSString stringWithFormat:@"buyHouse%d:", index];
SEL sel = NSSelectorFromString(method)
[self performSelector:sel withObject:sender];
}
- (IBAction)buyHouse0:(id)sender {
}
- (IBAction)buyHouse1:(id)sender {
}
- (IBAction)buyHouse2:(id)sender {
}