应用程序返回前台时删除字段

时间:2014-01-10 09:03:11

标签: ios objective-c

我是iOS开发的初学者。我应该做的是当应用程序在后台运行到foregroung时删除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类中执行此操作,那么如何正确地调用它?)

谢谢!

2 个答案:

答案 0 :(得分:1)

将您的代码放入

- (void)applicationDidBecomeActive:(UIApplication *)application

您应该使用此方法代替

- (void)applicationWillEnterForeground:(UIApplication *)application

当您更新用户界面时,这就是此方法的用途。 希望这有帮助。

// EXTENDED 你能尝试把这段代码放到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
}

答案 1 :(得分:0)

您可以通过发布通知来完成此操作。在yourFunctionName的位置写下你的函数名,即删除字段

在登录视图控制器中编写以下代码。

- (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];
}

希望这会对你有所帮助。