- (IBAction)buyHouse[6]:(id)sender;
我想通过执行上面显示的操作来创建IBActions
数组。它不允许我。是否可以创建一个方法数组,以便如果我想实现它,我只需要这样做。
- (IBAction)buyHouse[3]:(id)sender{
_Price.text = [NSString formatWithString: @"hello"];
}
此IBAction
适用于许多UIButton
。
这是我的第一个问题,所以如果它含糊不清,我真的很抱歉。我对Objective-C和这个社区都很陌生。
答案 0 :(得分:2)
由于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.
答案 1 :(得分:0)
您可以使用块而不是方法。
与IBAction签名匹配的块的Handy 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);
答案 2 :(得分:0)
你要为按钮分配标签[你可以在IB中这样做。那就是索引]
您有一个名为buyHouseByTag
的IBAction,然后您将所有按钮连接到该方法
你有buyHouse1,buyHouse2 ....
- (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 {
}