Различают accessoryView и ряд на ощупь
Я хочу, чтобы пользователи получали другой результат, если они нажимают на дополнительное изображение в ячейке таблицы, а не в строке.
Чтобы зафиксировать их нажатие на аксессуар, я использую следующий метод:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
NSLog(@"accessory button tapped");
}
Кроме того, я не использую стандартные показатели. Вместо этого я использую пользовательские изображения следующим образом:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]]];
}
это переопределяет стандартную вспомогательную кнопку и показывает изображение. Примечание. Оно показывает изображение независимо от того, какой индикатор раскрытия установлен в раскадровке, нет, флажок, индикатор раскрытия и т. Д.
Однако в настоящее время
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
NSLog(@"accessory button tapped");
}
метод не стрельба.
Есть несколько ответов на SO, которые предполагают, что этот метод не вызывается, если аксессуар является представлением аксессуара, а не типом аксессуара.
Кто-нибудь знает, можно ли использовать пользовательские изображения и при этом использовать метод нажатием кнопки?
2 ответа
Соблюдайте ;
в сигнатуре вашего метода еще до запуска тела:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;{
}
Как примечание от документации Apple:
Обсуждение Делегат обычно реагирует на нажатие на кнопку раскрытия (вспомогательный вид), отображая новый вид, связанный с выбранной строкой. Этот метод не вызывается, когда для строки в indexPath установлено вспомогательное представление.
Этот метод используется для определения касаний на индикаторе раскрытия, а не на дополнительном представлении.
Для того, чтобы поддержать ваши прикосновения аксессуаров, создайте UITableViewCell
и добавить UITapGestureRecognizer
на вашем дополнительном представлении, чтобы перехватить краны.
Вы можете добавить жест тега в UIImageView с помощью
UIImageView *imgView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]];
imgView.tag = indexPath.row;
UITapGestureRecognizer *tapGesture1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
tapGesture1.numberOfTapsRequired = 1;
[tapGesture1 setDelegate:self];
[imgView addGestureRecognizer:tapGesture1];
[cell setAccessoryView:];
И добавить метод выбора
- (void) tapGesture: (id)sender
{
//handle Tap...
}
Надеюсь, это поможет