2014-01-10 29 views
0

我是iOS開發人員的初學者。我應該做的是當應用程序在後臺移動到後臺時刪除2個字段(登錄名和密碼)的內容。 要清楚:如果用戶將應用程序置於前臺並且在登錄屏幕上,則對登錄名和密碼進行相應的字段應爲空。當應用程序回到前臺時擦除字段

我做了什麼:我已經添加了一個偵聽器到AppDelegate文件,它能夠很好的檢測背景/前景動作。下面是代碼:

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    @try { 
    UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController; 
    UIViewController *cont = [[navigationController viewControllers] objectAtIndex:[navigationController viewControllers].count - 1]; 

     if ([cont isKindOfClass:[LoginScreenController class]]){ 
      NSLog(@"[AppDelegate] ok, we're on login screen"); 
     } 
     else { 
      NSLog(@"[AppDelegate] No, we're not"); 
     } 
    } 
    @catch(NSException *exp) 
    { 
     NSLog(@"[AppDelegate] Fail: %@",exp); 
    } 
} 

但在執行代碼的時候,我到掛BaseRootView的問題。首先,我進行了適當的方式,然後,怎麼做我想做的事?也就是說,如何擦除字段(我有一個在LoginController類中執行此操作的函數,那麼如何正確調用它?)

謝謝!

+0

請在'LoginScreenController'中添加方法,重置字段 –

+0

當用戶登錄到應用程序並轉到後臺時會發生什麼?你想註銷用戶嗎? –

+0

當LoginController調用viewWillDisappear時,你不能擦除登錄憑據嗎? – ldindu

回答

1

把你的代碼中

- (void)applicationDidBecomeActive:(UIApplication *)application 

當你更新用戶界面,這是這種方法是您應該使用的,而不是

- (void)applicationWillEnterForeground:(UIApplication *)application 

此方法。 希望得到這個幫助。

//擴展 你能嘗試把這個代碼UIApplicationDidBecomeActiveNotification:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(updateUI) 
              name:UIApplicationDidBecomeActiveNotification 
              object:nil]; 

而這種代碼添加到AppDelegate中:

-(void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 

,並添加:

-(void)updateUI 
{ 
    //Add code to update ui 
} 
+0

即使我這樣做,我有例外「BaseRootViewController unrecognize選擇器發送到實例0x ....」 – Derbie

+0

你安裝了你的rootviewcontroller嗎? – Joshua

+0

@Derbie看到擴展後,並嘗試應用代碼,而不是現有的代碼。 – Greg

0

你可以通過發佈通知來做到這一點。在這裏代替你的函數名寫下你的函數名,即刪除字段

在登錄視圖控制器中寫下如下代碼。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ 

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) 
{ 
    // Custom initialization 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourFunctionName) name:@"removeText" object:nil]; 
} 
return self; 
} 

現在在applicationWillEnterForeground方法中發佈通知。

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"removeText" object:nil]; 
} 

希望這可以幫助你。

相關問題