2014-12-15 5 views
0

Я хочу добавить изображение на кнопку, которая находится на ячейке tableview, это мой код, все работает, но после выбора изображения, его не установлено или видно на imagebutton, пожалуйста, помогите мне. .....Добавить изображение на background background background

в cellForRowAtIndexpath метод

if(indexPath.row == 0) 
    { 
     cell.userInteractionEnabled = YES; 
     cell.textLabel.text [email protected]"Your Profile Photo"; 
     imageBtn = [[UIButton alloc]initWithFrame:CGRectMake(250, 5, 35, 35)]; 
      [imageBtn setBackgroundImage:[UIImage imageNamed:@"AFPFriendThumbnail.png"] forState:UIControlStateNormal]; 
     [imageBtn addTarget:self 
        action:@selector(myAction) 
      forControlEvents:UIControlEventTouchUpInside]; 

     imageView.backgroundColor = [UIColor lightGrayColor]; 

     [cell addSubview:imageBtn]; 

    } 

действие на кнопку

-(void)myAction 
{  
UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
[self presentModalViewController:picker animated:YES]; 
} 


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
[picker dismissModalViewControllerAnimated:YES]; 
UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage]; 
[imageBtn setImage:image forState:UIControlStateSelected]; 
imageBtn.backgroundColor = [UIColor redColor]; 
[tableView_ reloadData]; 
} 
+0

попробуйте перезагрузить ячейку следующим образом: [self.tableView reloadRowsAtIndexPaths: [NSArray arrayWithObjects: indexPathOfYourCell, nil] withRowAnimation : UITableViewRowAnimationNone]; – cyberlobe

+0

Вы можете показать первое изображение (AFPFriendThumbnail.png) на кнопке .. или нет.? –

ответ

6

Попробуйте с UIControlStateNormal

[imageBtn setImage:image forState: UIControlStateNormal]; 

Но я мог видеть вас перезагрузить Tableview после установки изображения, это заменит imageBtn

imageBtn = [[UIButton alloc]initWithFrame:CGRectMake(250, 5, 35, 35)]; // Creating a button every time. 

Он должен работать без перезагрузки, поскольку вы оставляете ссылку на imageBtn так, что вы можете прямо установить. Попробуйте путем удаления [tableView_ reloadData]

+0

его не работает – RaviJSS

+0

Ya это правильный ответ ...... –

+0

@RaviJSS См. Мое редактирование, вы не получаете, потому что вы перезагружаете таблицуView, которая заставит кнопку заменить на новую. Это, вероятно, вы не хотите –

1

Заменить

  imageBtn = [[UIButton alloc]initWithFrame:CGRectMake(250, 5, 35, 35)]; 

С этим

  imageBtn = [[UIButton [UIButton buttonWithType:UIButtonTypeCustom]; 
     imageBtn.frame=CGRectMake(250, 5, 35, 35); 

И. , Заменить

 [imageBtn setImage:image forState:UIControlStateSelected]; 

С этим ..

 [imageBtn setImage:image forState: UIControlStateNormal]; 

Я надеюсь, что это полезно для вас ..

2

Вы должны никогда reloadData вызова или любой из методов клеточной мастика в cellForRowAtIndexPath. Это вызовет бесконечную рекурсию.

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

Вместо этого, когда вы получите нуль от метода dequeue, добавьте свою кнопку и настройте ее с помощью уникального тега. Если вы вернете обратно переработанную ячейку, выберите кнопку с помощью viewWithTag и измените изображение и действие по мере необходимости. (Вам нужно будет удалить предыдущее действие, так как кнопки могут содержать более одного действия.)