如何在cocoa中从另一个文件设置对象的属性?

时间:2011-10-21 08:50:23

标签: objective-c ios cocoa-touch

我正在编写iPhone应用程序。

不是在这里编写所有代码,而是基本上我想要做的事情:

testViewController.m:

- (void)viewDidLoad { label.text=@"text"; } 

这很有用。
现在我想从testAppDelegate文件中更改标签文本。

- (void)applicationDidBecomeActive:(UIApplication *)application { 
testViewController *tvc=[[testViewController alloc] init];
tvc.label.text=@"another text";
[tvc release];
 }  

这不起作用!
我怎么能这样做?

感谢所有答案:)

4 个答案:

答案 0 :(得分:3)

在applicationDidBecomeActive中,您正在创建视图控制器的新实例(这是alloc / init),在新实例中设置标签文本 然后释放它。

您需要引用屏幕上视图控制器的实际实例。这可能已经在您的应用程序委托中的某处引用 - 例如,它是根视图控制器吗?什么时候创建它?

您可能需要在应用程序委托上设置属性以保存对此视图控制器的引用。您拥有的代码很好,除了您正在与新控制器交谈而不是屏幕上显示的控制器 - 当然假设您的标签是视图控制器上的属性。

答案 1 :(得分:0)

在.h文件中:定义属性:

@property (nonatomic, retain) UILabel *label;

在.m文件中:为该属性实现set / get方法(例如,自动):

@synthesize label;

答案 2 :(得分:0)

将testViewController声明为testAppDelegate.h中的outlet,在xib中执行绑定,可能是MainMenu.xib,现在尝试更改其标签的值 -

- (void)applicationDidBecomeActive:(UIApplication *)application 

答案 3 :(得分:0)

对不起!应该指定更多我正在做的事情。现在我已经学会了。 我有一个标签栏视图控制器模板。

我通过添加委托.h文件来解决这个问题:

@class testViewController
@property(nonatomic,retain) UIViewController *testViewcontroller;

并在.m文件中:

@synthesize testViewController=_tvc;
- (void)applicationDidBecomeActive:(UIApplication *)application
 {
_tvc.label.text=@"another text";
}

当然导入了testViewController.h并在那里删除了这些方法。

感谢您的所有回复:)