0

インターフェイス ビルダー (左側にある小さな青いボックスの 1 つ (Xcode 4.5.2)) に接続されているオブジェクトがあり、慣れているように NSTextField へのバインディングを作成しました。また、テキストを合成しました。メインファイルのフィールド (理由はよくわかりませんが、これが必要であることは確かです). ただし、 setStringValue:@"a string" をテキストフィールドに送信しようとすると、機能しません. また、試してみると、テキスト フィールド オブジェクトをコマンド ラインに出力すると、null と表示されます。Google で調べたところ、awakefromnib の代わりに init を使用するとこの問題が発生する人がいると思いますが、私のプログラムでは、ボタンを押すとこのメソッドがトリガーされます。コードは以下のとおりです。これ以上の情報が必要な場合はお知らせください。ありがとうございます。

#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 ファイルがロードされても、アウトレットはすぐには接続されません。awakeFromNib() は、ファイルがロードされるときに、XIB ファイル内のすべてのオブジェクトで呼び出されます。この後、アウトレットを使用してオブジェクトにアクセスできるようになります。

于 2013-01-18T14:58:53.013 に答える