【问题标题】:Updating UIImageView when a button is clicked单击按钮时更新 UIImageView
【发布时间】:2012-05-13 13:39:44
【问题描述】:

我正在使用情节提要功能在 XCode 4.2 中创建一个应用程序。我有 4 个基于导航控制器连接的视图。在其中一个视图中,我有一个文本框和一个按钮。我通过将文本框添加为代理来实现键盘隐藏。一旦我在文本框上输入完毕,我将按下按钮,它应该更新 UIImageView。

我知道我需要在 Interface Builder 上的 UIImageView 和我在接口文件上声明的 UIImageView IBoutlet 之间建立某种关系。但是在情节提要的情况下我该怎么做呢?

abcViewController.h我有

@interface abcViewController:UIViewController { IBOutlet UITextField *code; IBOutlet UIImageView *qrImage; } @property (noatomic, 保留) UITextField *code; @property (noatomic, 保留) UIImageView *qrImage -(IBAction)textFieldReturn:(id)sender; -(IBAction)goButton:(id)发件人;

abcViewController.m我有

@synthesize 代码; @synthasize qrImage; -(IBAction)textFieldReturn:(id)sender{ [发件人辞职FirstResponder]; } -(IBAction)goPressed:(id)sender{ [qrImage setImage:[UIImage imageNamed:@"qr.png"]]; }

在界面生成器MainStoryboard.storyboard 中,我已经在视图的First Responder 中为文本框的textFieldReturn 和按钮的goPress 建立了与相应事件的关系,并且我已将文本框链接为该视图的代表。现在我是否也必须将 UIImageViewer 连接到“First Responder”?如果是怎么办?

【问题讨论】:

    标签: iphone xcode xcode4 storyboard


    【解决方案1】:

    我认为您可能错误地使用了一些术语,但是您可以在 Interface Builder 中的视图和代码之间建立两种不同类型的连接。当您说您在第一个响应者与按钮和文本字段之间“建立了关系”时,听起来您连接了他们的操作。这样做是创建一个路径视图(按钮、文本字段等),你连接到的对象(在这种情况下,第一个响应,它本质上是 abcViewController)。将其视为单向路径;它所做的只是告诉这些控件(按钮和文本字段)它们应该在何时发送消息,因为事件发生了。因此,当按钮被单击时,它具有在某处发送消息的内置行为,如果它已连接。您已将它连接到 abcViewController 上的 goPressed: 操作,这就是它的作用。

    硬币的另一面是确保视图控制器可以将消息发送回控件。这就是网点的用途。听起来您没有设置任何出口,因此 abcViewController 无法向图像视图发送消息以表明它应该显示,或者更改它的图像或其他任何东西。

    您应该做的第一件事是将您的属性也定义为 IBOutlets,例如:

    @property (noatomic, retain) IBOutlet UITextField *code;
    

    然后返回interface builder时,如果转到检查器的连接选项卡,则选择第一个响应者时,您将看到它列出所有的插座。您需要将第一响应者 (abcViewController) 上的插座连接(从点拖动)到相应的视图。这会创建一条路径视图控制器视图(与您对操作所做的相反)。

    完成后,如果您在代码中告诉对象执行某项操作,则该消息将传送到加载视图时从 XIB 创建的对象。

    【讨论】:

    • 结合你的解决方案和另一个对我有用!谢谢!!
    【解决方案2】:

    首先,您需要确保您的视图控制器类已链接到您在情节提要中创建的视图控制器。

    然后将您在代码中声明的对象链接到情节提要中的对象,就像使用 xibs 一样拖放。

    【讨论】:

    • 我必须为我创建的所有视图执行第一步吗?
    • 我相信是这样,这就是您能够为添加到情节提要的每个视图控制器设置不同类的方法。
    • 但是我只有一个视图控制器类所以这里有话要说
    • 您只需将该类添加到您希望使用它的每个视图控制器中。
    • 嗯,谢谢.. 但是这样做并没有带来出口,因为我错过了另一个答案中写的步骤.. 我会尝试让你知道!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2014-06-11
    相关资源
    最近更新 更多