在Interface Builder中,IBOutlet无法连接 - Xcode 4.2

4
我已经阅读了其他问题,但它们似乎是针对Xcode 3.2或更早版本的,没有针对4.2版本的。 :(
我开始一个简单的项目,并希望在我的xib中连接File Owner的Outlets。遗憾的是,我的ViewController.h中的IBOutlet没有传递过来。
我没有10分以上的声望,所以这里是我的文件所有者未显示我的IBOutlets的截图
这是我的ViewController.h代码:
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController { 
    IBOutlet UITextField *txtName; 
    IBOutlet UILabel *lblMessage;
}

@property (nonatomic, retain) IBOutlet UITextField *txtName;
@property (nonatomic, retain) IBOutlet UILabel *lblMessage;

- (IBAction)doSomething;

@end

这是我的ViewController.m代码:

#import "ViewController.h"

@implementation ViewController

@synthesize txtName;
@synthesize lblMessage;

- (IBAction) doSomething
{
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text];
    [lblMessage setText:msg];
}

@end

我对Objective-C和Xcode很新,可能会犯错误,但我已经按照许多教程操作了,但我的IBOutlets从未显示出来。我已经尝试删除Xcode 4.2并重新安装以解决此问题。这是我Xcode版本4.2,Build 4D199信息的屏幕截图

还有其他人遇到过这个问题吗?感谢任何能指出我犯的错误的人。如果需要更多信息,请告诉我。

5个回答

15

在创建IBAction时,在.h文件中,它左侧会有一个连接指示器。当它未连接时,它显示为空心圆。

按住此连接指示器并将其拖动到要连接的项目上。我通常通过双击打开XIB在新窗口中进行操作。

Connect the IBAction to your button by dragging from the the .h file


如果无法连接,则必须在XIB文件中设置File's Owner。在占位符面板中选择File's Owner。转到实用程序面板,确保Identity Inspector中的Custom class已设置为您的视图控制器的名称。

Set files owner

希望这能帮助您。

干杯!


这个问题的解决方法在第二部分。我想我假设它默认设置了。非常感谢您的帮助和截图! - scared
我尝试了几乎所有的方法,但你的第一个技巧——打开一个新窗口并将其拖动——起作用了。 - nasaa

4

尝试在xib文件中重新分配您的文件所有者类引用。

然后附加您所有的IBOutlet连接。

希望这对你有所帮助。


1

0

在从Storyboard创建IBOutlet文本字段之前,需要添加两个内容:

  1. 将基础ViewController分配为UITextField的委托
  2. 在ViewController.h文件中添加UITextFieldDelegate到@interface声明中:

    @interface ViewController : UIViewController<UITextFieldDelegate>

在这两个步骤完成之前,您可以从Storyboard Ctrl单击并拖动到.h文件,但不会启用任何IBOutlet连接。


0
我终于找到问题所在了,希望这能帮助到其他正在遇到同样问题的人。 它与xib文件的文件所有者设置无关。我的问题是xib文件不在源文件所在的目录中,因此无法连接插座。一旦我将文件移到相同的目录中,一切都正常了。顺便说一句,我将所有文件都移到了顶级目录。不确定子目录是否可行...
移动文件时,请确保更新 xcode 指向新位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接