2010-01-07 2 views
1

Я пишу приложение, где мне нужно показать уменьшенное изображение на каждой ячейке таблицы, когда это миниатюрное изображение будет записано на пленку, оно должно нажать новый вид с большим изображением. Таким образом, для одной ячейки должны быть два события касания, один для изображения и другой для отображения подробного представления. По умолчанию в didSelectRowAtIndexPath я вызываю подробное представление, которое работает нормально.Нажмите на UIImageView в ячейке таблицы, чтобы показать увеличенное изображение

Может кто-нибудь предложить подход, пожалуйста.

Спасибо, Bhaskar

ответ

1

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

1

из вашего вопроса, следует понимать, что у Вас есть пользовательские ячейки с UIImageView в нем. В этом случае, когда вы нажимаете эту ячейку, может быть на изображении или в пустой части, вызывается метод didSelectRow atIndexPath. Лучше всего использовать кнопку, чтобы показать любую из них, аналогичную кнопке discloure в навигаторах.

0

Я бы порекомендовал подход TechZen: вы могли бы добавить пользовательский UIButton и поместить его, где бы вы ни находились в ячейке, и эта свобода хороша, но по моему опыту они, как правило, убивают прокрутку. Независимо от того, какие оптимизации сделаны для аксессуаров, вы можете сделать их лучше для своих пользователей, чем кнопок.

0

Я согласен с Алексом. Дополнительная информация: это вид дополнительного аксессуара Button Disclosure Button для строк таблицы. Пример этого см. На вкладке «Избранное» в приложении «Телефон». Нажатие на строку вызывает человека, но нажатие на эту синюю круговую кнопку справа приводит вас к подробному представлению контактной информации человека. Другим примером является приложение YouTube.

Я думаю, что вы хотите что-то вроде приложения YouTube, где нажатие на ячейку таблицы отображает увеличенное изображение, а нажатие кнопки раскрытия подробностей приводит к метаданным об изображении.

См. Документы для UITableViewCell о том, как добавить кнопку раскрытия подробностей. Это очень просто.

-1

Поскольку мы знаем, что изображение находится в камере, и я ненавижу подклассирование, мы можем собрать немного забавного взлома. Вы можете просто использовать свойство cell.imageView и перемешайте категорию на UIImageView:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 

    if([self.superview isKindOfClass:[UITableViewCell class]]){ 

     if([touches anyObject].tapCount == 1){ 

      //Image was tapped, issue notification, we use the cell as the object 
      [[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview] 
      //just return after the notification 
      return; 
     } 
    } 
    //if it wasn't a tap, just forward the touch 
    [super touchesEnded:touches withEvent:event]; 
} 

Затем в контроллере табличного, вы можете решить выбранную клетку путем:

NSIndexPath indexOfSelectedCellImage = [self.tableview indexPathForCell:[notificaton object]]; 

Я не проверял , но SuperView из cell.imageView может быть contentView, в этом случае просто заменить в следующем:

…if([self.superview.superview isKindOfClass:[UITableViewCell class]])… 
…[[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview.superview]… 

Примечание: Убедитесь, что ваш контроллер представления таблицы подписаться на Notific ция.

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