2016-01-20 90 views
0

我已经搜索整个互联网,但没有得到满足答案我想显示登录屏幕只有一次后用户Succesfull登录, 后LoginViewcontroller我有MainViewcontroller,我想显示该viewcontroller为只要用户不注销。注销用户再次从侧面菜单登录scReen,signInviewcontroller也是我的rootviewcontroller。 所以我必须写在applicationWill守则终止或应用didbecomeActive或别的东西,普莱舍帮助...我想显示登录屏幕只有一次在IOS

我目前使用下面这段代码在AppDelegate中,但它不工作..

if ([KnsUserDefault boolForKey:@"LoggedIn"]) { 
    [KnsUserDefault setBool:YES forKey:@"LoggedIn"]; 
    [self.window addSubview:[self.mainVc view]]; 

    SignInVViewController *signVc = [[SignInVViewController alloc] initWithNibName:@"SignInViewController" bundle:nil]; 
    signVc.modalPresentationStyle = UIModalPresentationFullScreen; 
    [self.mainVc presentViewController:signVc animated:YES completion:nil]; 
} else { 
    [self.window addSubview:[self.mainVc view]]; 
} 

请帮助

+1

我们不会将子视图添加到“UIWindow”实例,这是非常糟糕的做法。 – holex

回答

3
if (![KnsUserDefault boolForKey:@"LoggedIn"]) { 

它应该工作...

+0

它不工作..我也设置[saveDriverDefaultData setBool:是forKey:@“isLoggedIn”];在signInviewcontroller –

+0

好吧,现在你必须删除你的应用程序,因为你已经将键设置为YES一次 –

+0

可以解释nsuserdeafualt中的setBool foKey –

0

在AppDelegate.m @Mohammed做这样

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    Bool isLoggedIn = [KnsUserDefault boolForKey:@"LoggedIn"] 
    if (isLoggedIn) 
    { 
     [KnsUserDefault setBool:YES forKey:@"LoggedIn"]; 
      self.window.rootViewController = self.mainVC; 
    } 
    else 
    { 
     [KnsUserDefault setBool:NO forKey:@"LoggedIn"]; 
     SignInVViewController *signVc = [[SignInVViewController alloc] initWithNibName:@"SignInViewController" bundle:nil]; 
     self.window.rootViewController = signVc; 
    } 
    return YES; 
} 
+0

Thnxx Ismail,但我必须这样做NSUserdefault我无法使用Nsnotification –

+0

当您打开应用程序时,通知不是必需的,如果您注销或您的登录会话在执行过程中显示,那么通知不是必需的。您可以简单地删除通知的4行,并设置userDefaults。主要部分是如何将视图控制器设置为您的根视图控制器。我会更新我的答案。 – Ismail

+0

@MohammedHussain请看我更新的答案。希望它有帮助。如果您有任何问题,请不要犹豫,问。 – Ismail