2012-01-07 3 views
1

Я не знаю, почему это происходит, но я получаю эту ошибку:Ошибка при обработке касания UIImageView в ячейке?

-[__NSArrayM section]: unrecognized selector sent to instance 0x7e53b70 2012-01-07 15:35:44.108 Timely1[51661:15203] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM section]: unrecognized selector sent to instance 0x7e53b70'

когда handleTouch активируется. Вот мой код для добавления изображения и жест нажатия.

[cell.imageView setUserInteractionEnabled:YES]; 
[cell.imageView setImage:[UIImage imageNamed:@"checkbox.PNG"]]; 

UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch:)]; 
tapped.numberOfTapsRequired = 1; 
[cell.imageView addGestureRecognizer:tapped]; 
[tapped release]; 

, а затем мой код для обработки штрих:

-(void)handleTouch:(UITapGestureRecognizer *)gesture 
{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[array count] inSection:1]; 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

    [cell.imageView setImage:[UIImage imageNamed:@"checkbox_checked.PNG"]]; 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:array] withRowAnimation:UITableViewRowAnimationFade]; 
} 

UPDATE: Как насчет, если я хочу, чтобы снять его (как переключая его) Кто-нибудь знает, как сделать это?

+0

Мне кажется, что проблема, с которой вы столкнулись раньше, лежит в строке - NSIndexPath * indexPath = [NSIndexPath indexPathForRow: [array count] inSection: 1]; Вместо этого вам нужно использовать NSIndexPath * indexPath = [NSIndexPath indexPathForRow: [array count] -1 inSection: 1]; – rishi

+0

да, но знаете ли вы, как исправить '[self.tableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: array] withRowAnimation: UITableViewRowAnimationFade];' потому что я понял, что это проблема, но если я хочу снова перезагрузить ячейку, t использовать эту строку больше. – Souljacker

+0

Вы передаете объект NSIndexPath в массиве? – rishi

ответ

2

В вашем методе handleTouch я думаю, вы могли бы использовать:

UIImageView *cellImageView=(UIImageView *)gesture.view; 
+0

спасибо, что сработали. Проблема заключалась в том, что '[self.tableView reloadRowsAtIndexPaths: [NSArray arrayWithObject: array] withRowAnimation: UITableViewRowAnimationFade] ;, вот что дало ошибку. – Souljacker

+0

как насчет того, если я хотел снять его (например, переключить его), знаете ли вы, как это сделать? – Souljacker

+0

это заставило меня начать, но мне нужно было еще больше данных, а затем только состояние моего изображения, поэтому я решил создать расширение категории '@interface UITapGestureRecognizer (Utility)', которое добавляет дополнительное свойство '@property (неатомный, сильный) id userData; 'вызвал userData для размещения и позже получить аргументы, которые мне нужны. – pulkitsinghal

0

Я решил пойти с UIButton как мой флажок и подклассов мой UITableViewCell, кажется, проще и логичнее, особенно с битом переключаясь.

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

  • Нет связанных вопросов^_^