从另一个视图控制器更改UIButton图像

时间:2016-05-07 11:40:09

标签: ios uiviewcontroller uibutton

我有两个视图控制器,aControllerbController。我在aController中有一个按钮。现在我想从bController更改按钮图像。我在chageButtonImg中创建了一个名为aController的方法,并在一些功能更改chageButtonImg图像之后从bController调用UIButton方法。我打电话给它但按钮图像没有更新。

如何更改按钮图像?

3 个答案:

答案 0 :(得分:0)

您无法更改按钮图像,因为问题是当您的bController视图出现时,aController中的所有ui元素都会自动设置为null。因此要实现此功能,请将变量中的图像传递给aController而不是viewwillAppear更改按钮的图像

答案 1 :(得分:0)

只需通过NSString将图像名称传递给第二个视图控制器:

- (IBAction)collagescreen:(id)sender
{
    viewcontrollerB *bcontroller=[self.storyboard instantiateViewControllerWithIdentifier:@"collage"];
    bcontroller.string=@"imagename here.jpg"
    [self presentViewController:nav animated:YES completion:nil];
}

ViewController B.m文件你可以这样做

[btn setBackgroundImage:YourString forState:UIControlStateNormal]; 

答案 2 :(得分:0)

在具有按钮的控制器中创建公共属性imageName。 并在bController ---

 if(count==[myArr count]){ 
   HomeController *myH=[[HomeController alloc] init]; 
   [myH.imageName = @"imButton.png"; 
   return; 
} 

在控制器中---- 为按钮实现自定义getter

- (UIButton *) playAndPauseButton {

  UIImage *img = nil;
  if([_imageName isEqualToString:@“”]) {
    img = [UIImage imageNamed:@"playButton"]; 
   } else {
     img = [UIImage imageNamed:_imageName]
  }
  [_playAndPauseButton setImage:icon]; 
  return  _playAndPauseButton;
}