Выбранный UIImage в UITableView - PullRequest
0 голосов
/ 07 июня 2011

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

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

Я огляделся по сторонам и не могу даже найти простого объяснения или с чего-то начать.Это делается с помощью таких приложений, как Facebook и Twitter, где в виде таблицы вы видите изображение профиля пользователя и можете щелкнуть его вместо фактической ячейки ....

Любая информация будет отличной, спасибо!

Спасибо @Nekno Я начал пытаться реализовать этот метод и у меня есть несколько вопросов, если вы не против прояснить или высказать свое мнение.

Вот что я написал до сих пор

// Here we use the new provided setImageWithURL: method to load the web image with    
//SDWebImageManager
[cell.imageView setImageWithURL:[NSURL URLWithString:[(Tweet*)[avatarsURL 
objectAtIndex:indexPath.row]avatarURL]]
               placeholderImage:[UIImage imageNamed:@"avatar.png"]];




//create the button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setBackgroundImage:[NSURL URLWithString:[(Tweet*)[avatarsURL 
objectAtIndex:indexPath.row]avatarURL]] forState:UIControlStateNormal];


//the button should be as big as the image in tableView
[button setFrame:CGRectMake(10, 10, 45, 45)];


//set the type of action for the button
[button addTarget:self action:@selector(imageSubViewAction:)
 forControlEvents:UIControlEventTouchUpInside];


 //more stuff

 return cell }

Затем я использую это действие, которое я указал в @selector выше

-(IBAction)imageSubViewAction:(id)sender{


    [UIView beginAnimations:@"animateView" context:nil];
    [UIView setAnimationDuration:0.5];

    CGRect viewFrame = [subView frame];
    viewFrame.origin.x += -300;
    subView.frame = viewFrame;        

    subView.alpha = 1.0; 

    [self.view addSubview:subView];
    [UIView commitAnimations];

Так что я знаю, что будуЯ должен добавить действие, чтобы закрыть подпункт, но обо всем по порядку.

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

Способ жеста полностью отключает функцию didselectindexrow?потому что я хотел бы иметь оба.

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

Еще раз спасибо, явысоко ценю помощь!

}

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Я думаю, что самым простым способом было бы добавить UIButton в качестве подпредставления и добавить изображение в качестве фонового представления для UIButton, либо через Interface Builder, либо создав UIImage.

Затем вы можете подключить обработчик событий к выходу Touch Up Inside, который будет обрабатывать нажатие кнопки.

При использовании кнопки UIB выбор ячейки UITableView не должен срабатывать. Если по какой-то причине вы обнаружите, что ячейка таблицы выбирается, когда пользователь касается кнопки, вы можете использовать UIImageView вместо UIButton, а затем добавить распознаватель жестов в UIImageView, который обрабатывает прикосновения к изображению и отменяет выбор ячейки таблицы.

Чтобы добавить распознаватель жестов в UIImageView и отменить касания для UITableView:

Примечание: imageView - это локальная переменная, которая ссылается на ваш UIImageView.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //...
    // by default, UITapGestureRecognizer will recognize just a tap.
    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
    gestureRecognizer.cancelsTouchesInView = YES; // cancels table view cell selection
    [imageView addGestureRecognizer:gestureRecognizer];
    [gestureRecognizer release];
    //...
}

- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
    // get the imageView that was tapped
    UIImageView* imageView = gestureRecognizer.view;
    // do something else
}
0 голосов
/ 12 июня 2011

Вот как я это сделал для тех, кто ищет ответ, вы можете использовать его по своему желанию!

 //create the button
 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
 [cell addSubview:button];
 [cell bringSubviewToFront:button];

 button.backgroundColor = [UIColor clearColor];


//[button setBackgroundImage:[UIImage imageNamed:@"cellbutton.png"] 
//forState:UIControlStateNormal]; //sets the image 

[button setImage:[UIImage imageNamed:@"cellButton.png"]   
forState:UIControlStateHighlighted]; //sets the highlighted image            

//the button should be as big as the image in tableView

[button setFrame:CGRectMake(10, 25, 50, 50)];

 //set the type of action for the button
 [button addTarget:self action:@selector(detailSubView:)
 forControlEvents:UIControlEventTouchUpInside];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...