【问题标题】:Help changing image based on button press帮助更改基于按钮按下的图像
【发布时间】:2011-01-25 03:58:54
【问题描述】:

我有一个我仍然无法解决的问题...我要创建的是:主视图控制器上的 UIImage。这个 UIImage 需要通过主视图控制器的子视图上的按钮来控制。因此,当按下“香蕉”按钮时,第一个视图上的图像将变为香​​蕉。当按下“苹果”按钮时,第一个视图上的图像将变为苹果。当按下“番石榴”按钮时,第一个视图上的图像将变为番石榴的图片。我遇到的主要问题是将按钮链接到 UIImage。另外,我不确定如何实现切换机制。我也不知道创建一个包含图像的数组是否更好,第一个视图可以检索。任何代码/建议都会有所帮助。谢谢!!

【问题讨论】:

    标签: iphone


    【解决方案1】:

    凯文,

    您需要在视图控制器中有一个响应器,该响应器通过界面构建​​器链接到视图控制器上的所有按钮。在 IB 中,要将按钮链接到方法,请确保该方法在您的 viewcontroller.h 文件中并且也在 .m 文件中实现。然后转到 IB 中的连接面板(单击按钮后)并将连接从“内部触摸”(内部触摸是当用户触摸按钮并在按钮边界内释放触摸时)拖动到视图控制器.xib 窗口到文件的所有者图标上。从那里您将看到一个下拉菜单,让您可以选择您在头文件中指定的 IBAction 方法。

    在这种情况下采取:

    - (IBAction) buttonPressed: (id) sender; // header file
    
    
    
    - (IBAction) buttonPressed: (id) sender { // .m file
       // when the button is pressed then change the uiimageview
       [imageView image: [UIImage imageWithContentsOfFile: @"image.png"]];
    }
    

    【讨论】:

    • 这是有道理的,但是按钮在图像的子视图上,而不是在图像所在的同一视图上。我不知道该怎么做,所以当按下按钮时,前一个视图上的图像会改变。使用您在上面给我的代码,如果一切都在视图中,它似乎会起作用。不过,我有两种看法。我是否必须在主视图实现文件中导入子视图方法?不完全确定当它们在不同视图上时我必须做什么才能将按钮连接到图像。我读过回调,但我不确定这是否适用于这种情况
    • @Kevin Fox,抱歉,我刚刚找到您的评论。您需要在第一个视图可以实现的第二个视图上设置委托函数。然后你就可以做你想做的事了。如果您不了解委托函数,请告诉我。
    【解决方案2】:

    @kevin fox 我认为你对 iPhone 编程很陌生。

    你要做的就是创建一个这样的函数

    - (IBAction)changeImagesWithName:(id) sender;
    

    在你的头文件中并在你的 .m 文件中实现它。

    在 IB 控件中将按钮拖到文件所有者并单击该方法。

    使用 IBOutlet 在视图控制器中创建一个 uiimageview 实例,并将其连接到 IB 中的 UIImageView。

    在上面的方法中使用类似这样的东西

    UIButton *temp = 发送者;

    [imageView 图像:[UIImage 图像命名:[NSString stringWithFormat:@"%@.png", temp.currentTitle]]];

    并将图像命名为 按钮

    【讨论】:

      【解决方案3】:

      如果您有不同的图像按钮,请使用 Michael Dillon 提供的代码

      编辑:如果每个按钮都有不同的按钮,您可以硬编码图像名称

      如果您只有一个按钮,则使用图像数组并在每次点击时显示下一个索引图像

      【讨论】:

        猜你喜欢
        • 2011-03-29
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 2011-01-11
        相关资源
        最近更新 更多