2011-10-31 28 views
0

即时新编程,并盯着目标c。我想在一个文件中声明一个属性,并使其成为另一个文件,但由于某种原因,它不起作用。我可能在做非常愚蠢的事情,不要怪我。访问属性在目标c中形成一个uiviewcontroler实例。

我有folling第一头:

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

@interface ViewController : UIViewController{ 
    NSString* theText; 
} 
@property (nonatomic, assign) IBOutlet UITextField *textField; 
@property (nonatomic, retain) NSString *theText; 



@end 

在这里,我.m文件

#import "ViewController.h" 

@implementation ViewController 
@synthesize theText,textField; 

- (void)viewWillDisappear:(BOOL)animated 
{ 
[super viewWillDisappear:animated]; 
    [self setTheText:textField.text]; 

} 

@end 

现在我想用theText财产在其他文件中既使用它,并改变它。所以我想这会工作,但它并不:

第二.m文件:

#import "second.h" 
#import "ViewController.h" 

@implementation second 
@synthesize secLabel; 

-(void)nameLabel{ 

    secLabel.text = [ViewController theText]; 
} 

@end 

编译器说,对选择没有已知的类方法。我尝试了很多,但没有任何工作,有人知道如何使这项工作?

TNX

回答

0

theText是一个实例级属性,但您要访问它的视图控制器类。相反,您需要在ViewController的某个实例上访问它。换句话说,你需要:

ViewController *viewController = ... some code to get a ViewController pointer ... 
secLabel.text = [viewController theText]; 

你的“第二”视图控制器某种程度上需要获得视图控制器的一个实例。如何真正得到这取决于你的应用程序,我不能不知道更多关于你的代码。

0

http://www.galloway.me.uk/tutorials/singleton-classes/

这将告诉你如何正确地做一个单独的类。

它可能不是最干净的方式,但它的存储数据的正确路径。

+0

谢谢! 我明白教导,但我不明白在哪里/如何打电话: MyManager * sharedManager = [MyManager sharedManager]; 你能解释一下吗? – user1022722

+0

它在执行任何命令访问单例类之前必须执行的操作。所以E.G. – Necro

+0

如果你在按下按钮后改变一个数字,你会像这样写MyManager * sharedManager = [MyManager sharedManager]; sharedManager.number + = 1;得到它? – Necro