2016-01-20 86 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