0

AppController.h で NSTextView を作成しています。

 @interface AppController : NSObject {
    IBOutlet NSTextView *texto;
}

@property (assign) IBOutlet NSTextView *texto;

@end

接続して適切にチェックした後、別のクラス (AppMenu.m) からこの TextView のテキストを設定しようとしていますが、うまくいきません:

#import "AppController.h"

- (IBAction)setText:(id)sender {
        AppController *appControl = [[AppController alloc] init];
        [[appControl texto] setString:@"Hello"];
}

私は何をすべきか?

4

2 に答える 2

0

呼び出すと、新しいオブジェクトallocが作成されます。必要なのは、すでに存在するものへの参照です。AppController

AppController(フィールドを変更しようとするコードを実行する前に、テキストビューがオブジェクトによってすでに表示されていると想定しています。)

于 2012-08-17T11:34:49.667 に答える
0

問題は、Appmenu が texto の新しいインスタンスを作成し、(同じプロパティを持つ) appmenu 用のローカル インスタンスを作成し、実際に appcontroller にあるインスタンスにプロパティを設定しないことです。デバッグを試みると、2 つの texto オブジェクトのメモリ ポインターが異なることがわかります。

appcontroller を appmenu のデリゲートにして、appmenu から appcontroller にデータを渡すことができる 'setTextoProps' メソッドを作成することができます。

また、storyboard.appcontroller のインスタンスを作成し、次のような方法で直接データを設定することもできます。

Appcontroller *controller  = [self.storyboard instantiateViewControllerWithIdentifi er:@"appcontroller"]; 

[self.controller.texto setText...];
于 2012-08-17T11:43:03.983 に答える