【问题标题】:Change UIButton image from another View Controller从另一个视图控制器更改 UIButton 图像
【发布时间】:2016-09-02 10:52:30
【问题描述】:

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

如何更改按钮图像?

【问题讨论】:

  • 如果 bController 已经加载,那么您可以使用 NSNotificationCenter 调用特定方法,您可以更改按钮的背景图像。如果它将被 aController 调用,则根据布尔值传递一个布尔变量,您可以设置图像

标签: ios uiviewcontroller uibutton


【解决方案1】:

在具有按钮的控制器中创建一个公共属性 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;
}

【讨论】:

  • 我不知道您在导航中的 VC 状态,但如果全部设置好了,它就会起作用。
【解决方案2】:

只需通过 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]; 

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 实际上,当我尝试更改 UIButton 图像时,我在 aController 中。bController 正在作为后台任务工作。
    • 这应该很容易,只需发布​​您的代码,以便我们查看您在哪里犯了错误
    • in bController: if(count==[myArr count]){ HomeController *myH=[[HomeController alloc] init]; [myH songFinished:[UIImage imageNamed:@"imButton.png"]];返回; }
    • 在控制器中:-(void)songFinished:(UIImage *)icon{ // UIImage *img = [UIImage imageNamed:@"playButton"]; [_playAndPauseButton setImage:icon]; }
    • 这里的 HomeController 是一个控制器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多