【问题标题】:Change a UIImageView on another ViewController using a button?使用按钮更改另一个 ViewController 上的 UIImageView?
【发布时间】:2015-07-20 04:47:17
【问题描述】:

如果 Ball UIImageView 在同一个 View Controller 上但 Ball 在单独的 View Controller 上,则此代码将起作用,因此它说:

使用未声明的标识符“Ball”

当这个视图控制器上的动作被实现时,我应该如何改变 Ball 的图像?

}
-(IBAction)BallSelect2:(id)sender{
    Ball.image = [UIImage imageNamed:@"ball2fire.png"];

}
-(IBAction)BallSelect3:(id)sender{
    Ball.image = [UIImage imageNamed:@"ball70color.png"];

}
-(IBAction)BallSelect4:(id)sender{
    Ball.image = [UIImage imageNamed:@"sawball.png"];

【问题讨论】:

  • 最好将 UIImage(或图像名称字符串)传递给相关的视图控制器,然后让该视图控制器设置 UIImage。如果您不确定如何在视图控制器之间传递对象,那么几乎每天都会在 stackoverflow 上询问该特定问题,所以我确定您可以了解如何
  • Ball 到底是什么?
  • Ball 是 UIImageView
  • 哦,好吧。我看了你的问题和一些答案,现在我迷路了):

标签: ios objective-c xcode uiimageview viewcontroller


【解决方案1】:

当你从一个viewController到另一个viewController进行Segue时,你可以使用prepareForSegue方法来设置UIViewImage的outlet。

【讨论】:

    【解决方案2】:

    在下一个要更改图像的视图控制器上创建 UIImage 的属性,并在同一视图控制器上创建 UIImage 的本地对象,并在相应的按钮单击时传递图像名称

     -(IBAction)buttonActions:(UIButton *)sender
     {
        switch (sender.tag) {
        case 0:
            ball_Image = [UIImage imageNamed:@"ball2fire.png"];
            break;
        case 0:
            ball_Image = [UIImage imageNamed:@"ball70color.png"];
            break;
        case 0:
            ball_Image = [UIImage imageNamed:@"sawball.png"];
            break;
    
        default:
            break;
       }
     }
     - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender        {
             NextViewController *objnext = [segue destinationViewController];
             objnext.ballImage =ball_Image.image;
    }
    

    然后将该 ballImage 分配给 NextviewController 中的 imageview。

    【讨论】:

      【解决方案3】:

      使用委托。为

      设置委托
      // -- declare this on SecondViewController.h
      id delegate;
      
      // -- on FirstViewController after you instantiate SecondViewController set the delegate
          secondViewController.delegate = self;
      

      然后你可以在 SecondViewController 上调用。

      (FirstViewController*)self.delegate.Ball setImage["your_image"];
      

      【讨论】:

        【解决方案4】:

        为此,您需要所有人的 Ball UIImageView 共享实例。

        创建一个包含 UIImageView 对象的单例类,并将该类作为子视图添加到其他视图控制器。

        【讨论】:

        • 我该怎么做呢?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多