通过objective-c中的类访问变量

时间:2011-02-14 10:03:16

标签: iphone objective-c getter-setter

在我的项目中,我的第一个视图是一个登录视图,我想将用户名例如其他类中的用户名。 我真的不知道如何在其他类中获取它,我在stackoverflow中搜索并且没有找到(我尝试了几件但是它没有用) 我告诉你我是怎么做到的:

login.h

@interface loginViewController:UIViewController <UITextfieldDelegate>{

    IBOutlet UITextField *usernameField;
    IBOutlet UITextField *passwordField;
    IBOutlet UIButton *loginButton;
    NSString *user;

}
@property (nonatomic, retain) UITextField *usernameField;
@property (nonatomic, retain) UITextField *passwordField;
@property (nonatomic, retain) UIButton *loginButton;
@property (nonatomic, retain) NSString *user;
- (IBAction)login: (id) sender;
- (NSString *)user;

@end

login.m

@implementation LoginViewController

@synthesize usernameField;
@synthesize passwordField;
@synthesize loginButton;

- (IBAction) login: (id) sender{
    user=[[NSString alloc ]initWithFormat:@"%@",usernameField.text];
    //...I put here my login code...

    }

- (NSString *)user{
    return user;
    }

home.m

@implementation homeViewController
- (void)viewDidLoad 
{
[super viewDidLoad];
user2 = LoginViewController.user ;   //I tried this after the advice given below, still not working
user2 = LoginViewController.usernameField.text;   //same

NSLog(@"user: %@",user2);

}

我将在我的所有项目中使用此值,以显示有关已连接的客户端的信息。

我只需要一个我可以使用的提示或示例代码。

编辑:我根据给出的建议更改了我的代码,告诉我是否遗漏了某些内容

2 个答案:

答案 0 :(得分:1)

两件事:

  1. 您的主要问题是您声明了一个采用sender参数(getUser:(id)sender)的方法,但是发送的消息没有冒号或参数(getUser)。这是两件完全不同的事情。

  2. Objective-C中的访问者不应该以{{1​​}}开头 - 这意味着别的东西。选择器(基本上是方法名称的Objective-C术语)应该只是get。所以:

    user

答案 1 :(得分:0)

在homeViewController中创建类loginViewController的对象。

然后根据您的要求获取或设置登录变量的值。

假设你的homeViewController需要一个NSString,在homeViewController中创建一个loginViewController对象。

anyRequiredVariable=login.usernameField.text;//Assuming that login is the object of loginViewController Class.

这将解决您的问题。

干杯