2014-10-10 3 views
0

У меня есть список значений, поступающих из базы данных, каждая из которых имеет свой собственный уникальный идентификатор. Я хочу, чтобы удалить строку из списка, используя этот идентификатор. Моя проблема заключается в том, что я пытаюсь понять, как отправить значение через действие кнопки, которое будет использоваться в вызываемой функции.Xcode: Отправить значение через целевое действие из цикла for

Для экс:

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

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

_fId значение, которое я пытаюсь понять, как отправить функции deleteFeed. Я знаю, что это должно быть что-то простое, но я просто не могу его уловить при поиске в Google.

ответ

0

addTarget определил набор параметров и вы не можете отправить обычай.

В качестве временного решения можно сделать ниже: Используйте следующую апи и установить _fId, как TAG к кнопке:

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 
} 

Надеюсь, это поможет.

+0

Спасибо за решение. Это здорово! По-прежнему хотелось бы, чтобы было возможно передать значение нажатием кнопки, но похоже, что это лучший способ обхода этого сценария. – pingeyeg

+0

Ну, я думал, это решение моего решения, но, возможно, я ошибаюсь. Каждый раз, когда я смотрю на параметр отправителя, он говорит, что _tag установлен в 0. Это то, что я должен искать? – pingeyeg

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

Это будет работать, только если вы создадите новую кнопку для каждого элемента массива, который вы хотите удалить. К сожалению, без дополнительного контекста кода я не могу создать лучший пример для вас.

Смежные вопросы