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 中实际设置属性。如果您尝试调试,您​​会看到两个 texto 对象具有不同的内存指针。

您可以让 appcontroller 成为 appmenu 的代表,并创建一个“setTextoProps”方法,该方法可以将数据从 appmenu 传递到 appcontroller。

您还可以创建 storyboard.appcontroller 的实例并直接使用类似的东西设置数据

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

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