0

我有一个连接到界面生成器的对象(左侧的小蓝框之一(Xcode 4.5.2),并且我已经创建了到 NSTextField 的绑定,就像我习惯做的那样。我还合成了文本主文件中的字段(不太明白为什么,但很确定这是必要的)。但是,当我尝试将 setStringValue:@"a string" 发送到文本字段时,它不起作用。另外,当我尝试将文本字段对象打印到显示为空的命令行。通过谷歌搜索,我认为有些人在使用 init 而不是 awakefromnib 时会遇到这个问题,但是当我按下按钮时会触发我程序中的这个方法。代码如下。如果需要更多信息,请告诉我。谢谢。

#import <Foundation/Foundation.h>
#import "CSSRuleSet.h"

@interface RuleSetViewUpdater : NSObject
@property (weak) IBOutlet NSTextField *top;

-(void)updateFields:(CSSRuleSet *)RuleSet;


@end

.

#import "RuleSetViewUpdater.h"

@implementation RuleSetViewUpdater

@synthesize top = _top;

-(void)updateFields:(CSSRuleSet *)RuleSet
{
    [_top setStringValue:[RuleSet getValue:@"top"]];
    NSLog(@"%@", _top);
}

@end

xib结构

在此处输入图像描述

4

2 回答 2

2

好的,所以我意识到我做错了什么。基本上,我已经很好地将接口构建器连接到对象,并且它可以工作,但是由于我的程序的性质,我正在初始化一个新对象来控制接口,但没有意识到这样做它将无法访问界面。所以基本上我不得不传递原始对象。这可能没有任何意义,但如果需要更好地解释,请告诉我。

于 2013-01-20T18:44:47.040 回答
0

首先,您需要从源文件到 XIB 文件中的对象的连接。您定义了一个插座,但不确定它是否实际连接。右键单击 XIB 文件中的对象并确保插座已连接。

您的 NSLog 语句( NSLog(@"%@", _top); )记录 NSTextField 对象本身。它记录“(null)”的事实意味着插座(尚未)连接。当您的 XIB 文件被加载时,插座不会立即连接。加载文件时,将对 XIB 文件中的所有对象调用 awakeFromNib()。在此之后,您应该能够使用插座访问对象。

于 2013-01-18T14:58:53.013 回答