我有一个来自数据库的值列表,每个值都有自己唯一的ID。我希望能够使用该ID从列表中删除一行。我的问题是,我正在尝试了解如何通过按钮操作发送值以在被调用函数中使用。
例如:
NSString *sId = [_idArray objectAtIndex:i];
_fId = [sId intValue];
[deleteBtn addTarget:self action:@selector(deleteFeed:_fId) forControlEvents:UIControlEventTouchUpInside];
_fId是我试图了解如何发送到函数deleteFeed的值。我知道这一定很简单,但在搜索Google时我无法确定它。
答案 0 :(得分:0)
addTarget已定义了一组参数,您无法发送自定义。
作为一种解决方法,您可以在下面执行: 使用以下api并将_fId设置为按钮:
action:@selector(deleteFeed:)
即
[deleteBtn setTag:_fId]
[deleteBtn addTarget:self action:@selector(deleteFeed:) forControlEvents:UIControlEventTouchUpInside];
现在从相关标签的按钮中检索标签以识别按钮。
- (void) deleteFeed:(UIButton*)sender{
[self deleteWithTag:sender.tag];
// Or place opening logic right here
}
我希望这会有所帮助。
答案 1 :(得分:0)
如何对UIButton进行子类化?通过这种方式,您可以将属性命名为适当的名称,而不是重复使用含糊不清的tag
。
@interface ButtonWithData : UIButton
@property (assign) int aValue;
@end
- (void)yourForLoopFunction {
for (NSString *sId in _idArray) {
NSString *sId = [_idArray objectAtIndex:i];
ButtonWithData *deleteBtn = [ButtonWithData buttonWithType:UIButtonTypeCustom];
deleteBtn.aValue = [sId intValue];
[deleteBtn addTarget:self action:@selector(deleteFeed:) forControlEvents:UIControlEventTouchUpInside];
[someView addSubview:deleteBtn];
}
}
仅当您为要删除的每个数组项创建一个新按钮时,此操作才有效。没有更多的代码上下文,遗憾的是,我无法为您提供更好的示例。