Xcode:通过for循环的目标操作发送值

时间:2014-10-10 15:05:32

标签: ios xcode sqlite

我有一个来自数据库的值列表,每个值都有自己唯一的ID。我希望能够使用该ID从列表中删除一行。我的问题是,我正在尝试了解如何通过按钮操作发送值以在被调用函数中使用。

例如:

NSString *sId = [_idArray objectAtIndex:i];
_fId = [sId intValue];

[deleteBtn addTarget:self action:@selector(deleteFeed:_fId) forControlEvents:UIControlEventTouchUpInside];

_fId是我试图了解如何发送到函数deleteFeed的值。我知道这一定很简单,但在搜索Google时我无法确定它。

2 个答案:

答案 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];
  }
}

仅当您为要删除的每个数组项创建一个新按钮时,此操作才有效。没有更多的代码上下文,遗憾的是,我无法为您提供更好的示例。