单击按钮时更新UIImageView

时间:2012-05-04 01:34:59

标签: iphone xcode xcode4 storyboard

我正在使用故事板功能在XCode 4.2中创建一个应用程序。我在导航控制器的基础上连接了4个视图。在其中一个视图中,我有一个文本框和一个按钮。我通过添加文本框作为deligate在返回时实现了键盘隐藏。完成输入文本框后,我将按下按钮,它应该更新UIImageView。

我理解我需要在Interface Builder上的UIImageView和我在接口文件中声明的UIImageView IBoutlet之间建立某种关系。但是我如何在故事板情况下这样做?

abcViewController.h我有

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

abcViewController.m我有

 @synthesize code; 
 @synthasize qrImage; 
-(IBAction)textFieldReturn:(id)sender{ 
   [sender resignFirstResponder]; 
} 
-(IBAction)goPressed:(id)sender{ 
   [qrImage setImage:[UIImage imageNamed:@"qr.png"]]; 
}

在界面构建器MainStoryboard.storyboard中,我已在视图First Responder中为文本框textFieldReturn和按钮{{1}建立了关系相应的事件,我已将文本框链接为此视图的deligate。现在我是否必须将UIImageViewer连接到“First Responder”?如果是的话怎么样?

2 个答案:

答案 0 :(得分:1)

首先,您需要确保视图控制器类链接到您在故事板中创建的视图控制器。

enter image description here

然后将您在代码中声明的对象链接到故事板中的对象,并将其拖放到xibs中。

enter image description here

答案 1 :(得分:1)

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

硬币的另一面是确保视图控制器可以将消息发送回控件。这就是网点的用途。听起来好像你没有设置任何插座,所以abcViewController无法向图像视图发送消息,它应该显示它,或者改变它的图像,或任何东西。

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

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

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

一旦完成,如果您告诉对象在您的代码中执行某些操作,那么当您的视图加载时,该消息将被传递到从XIB创建的对象。