0

我正在創建一個iOS應用程序,該應用程序在選項卡欄控制器上具有登錄系統。標籤欄作爲根控制器加載,如果用戶未登錄,登錄子視圖將填充屏幕。因爲標籤欄控制器的第一個視圖已經加載,所以viewWillAppear:。我使用viewWillAppear:重新加載每個負載的表格視圖。該系統效果很好。僅在第二次加載視圖時才運行函數

但是,我想知道如何在第二次加載時(即在用戶登錄後)運行函數(void),爲用戶提供特定的表視圖,而不是加載一個在每個視圖上 - 這就是爲什麼我不使用viewDidLoad:,因爲它只運行一次。

回答

1

是的,我有更好的解決方案,而不是採取一些變量,因爲當我們重新啓動我們的應用程序時,不會保留最後的值。

爲此,您需要使用數據庫,但需要大量的編碼。最好有NSUserDefaults用於存儲系統首選項。

Write this in your viewWillAppear: 

if([[NSUserDefaults standardUserDefaults]valueforKey:@"key"]==nil) 
{ 
    NSUserDefaults *default = [NSUserDefaults standardUserDefaults]; 

    [default setValue:@"1" forKey:@"key"]; 
    [default synchronize]; 
} 
else 
{ 
    NSLog(@"Once you make successful login this value wont change till you make logout"); 
} 

& now just change the value in NSUserDefaults while doing logout. 


NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForkey:@"key"]); // way to access this system dictionary. 

更多參考谷歌爲教程NSUserDefaults的

希望這會解決某種URS的問題。 :)

1

添加一個整數實例變量,增加它在每個viewWillAppear中,並運行你的函數只有在您的實例變量大於1

+0

對不起,相當新的目標C編碼 - 你怎麼做增量? – 2011-06-11 22:34:57

+0

如果它只是一個int你可以做變量++; – Sascha 2011-06-11 22:38:03

+0

只是用它來給它一個測試,並且每次返回0 int i = 0; int i2 = i ++; NSString * myString = [NSString stringWithFormat:@「%d」,i2];的NSLog(myString的); – 2011-06-11 22:48:05

0

如果你保留一個計數器,它不會工作,因爲用戶可以打開你的觀點很多次都沒有登錄。那麼,你應該怎麼做,這將保持用戶的會話信息。當用戶登錄時填寫此會話信息,否則不填。每當用戶想要打開此選項卡時,請檢查此信息。

+0

不是我以後的答案。用戶不能看到任何東西,除非它們已被記錄,但視圖仍然被加載但不可訪問。 – 2011-06-11 22:45:53

+0

好吧,你可以只顯示另一個視圖 – 2011-06-11 22:46:53

+0

即時通訊不知道你真的明白我之前寫了什麼。標籤欄控制器是根視圖控制器,因此自動加載標籤欄上的第一個內容 – 2011-06-11 22:48:49

相關問題