0

我正在使用情节提要功能在 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"]];
}

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

4

2 回答 2

1

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

在此处输入图像描述

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

在此处输入图像描述

于 2012-05-04T01:46:59.530 回答
1

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

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

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

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

Then when you go back to Interface Builder, if you go to the connections tab of the inspector, when the First Responder is selected, you will see it list out all of it's outlets. 您需要将第一响应者 (abcViewController) 上的插座连接(从点拖动)到相应的视图。这会创建视图控制器视图的路径(与您对操作所做的相反)。

一旦完成,如果你告诉对象在你的代码中做某事,当你的视图被加载时,该消息将被传送到从 XIB 创建的对象。

于 2012-05-04T01:56:38.647 回答