如何创建一个全局变量来从不同的ViewControllers访问?

时间:2012-05-02 19:55:19

标签: authentication ios5 singleton global-variables

我有一个带有不同ViewControllers的应用程序,它们在导航控制器中管理。在一个ViewController中,我正在向我的WebService发出请求以对用户进行身份验证。我正在BOOL(isLoggedIn)中编写响应。现在我需要在不同的ViewControllers中使用此BOOL和用户名。我需要变量来更改自定义导航按钮标题(登录 - >注销)。另外在另一个ViewController中,我要向WebService发送一些东西,但只允许一个Authenticated User(isLoggedIn)进行调用。 我希望它解释得很好:) 那么我有什么可能让这项工作成功呢?我已经阅读了创建Singleton类的内容,这是正确的方法吗?

或者我应该以某种方式从我的LoginViewController到受影响的ViewControllers建立连接? 我怎样才能做到这一点?现在我刚刚使用方法prepareForSegue来引用DetailViewController并传递数据。

1 个答案:

答案 0 :(得分:1)

您可以制作单身实现,如:

static SingletonClass *_sharedClass = nil;
@implementation SingletonClass

@synthesize sharedVar;

+ (SingletonClass*)sharedClass
{
    if (_sharedClass == nil) {
        _sharedClass = [[SingletonClass alloc] init];
    }
    return _sharedClass;
}

- (id)init
{
    if ((self = [super init])) {
        //init any class vars you need
    }
    return self;
}
@end

然后让sharedVar成为该类的属性。从应用程序的任何位置,您都可以使用:

[[SingletonClass sharedClass] sharedVar];

访问它。