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

Ios 应用程序返回前台时删除字段,ios,objective-c,Ios,Objective C,我是iOS开发的初学者。我要做的是,当应用程序在后台移动到foregroung时,删除两个字段(登录名和密码)的内容。 需要明确的是:如果用户将应用程序放在前台并显示在登录屏幕上,则与登录和密码对应的字段应为空 我所做的:我向AppDelegate文件添加了一个监听器,它可以很好地检测背景/前景动作。代码如下: - (void)applicationWillEnterForeground:(UIApplication *)application { @try { UINaviga

我是iOS开发的初学者。我要做的是,当应用程序在后台移动到foregroung时,删除两个字段(登录名和密码)的内容。 需要明确的是:如果用户将应用程序放在前台并显示在登录屏幕上,则与登录和密码对应的字段应为空

我所做的:我向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类中有一个函数来执行此操作,因此如何正确地调用它?)

谢谢

把你的代码放进去

- (void)applicationDidBecomeActive:(UIApplication *)application
您应该使用此方法,而不是

- (void)applicationWillEnterForeground:(UIApplication *)application
当您更新用户界面时,这就是此方法的用途。 希望这有帮助

//延伸 您是否可以尝试将此代码放入UIApplicationIDBecMeactivateNotification:

[[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
}

您可以通过发布通知来实现这一点。在此处,在函数名的位置写下函数名,用于删除字段

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

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

希望这对您有所帮助。

请在
LoginScreenController
中添加重置字段的方法。当用户登录到应用程序并转到后台时,会发生什么情况?是否要注销该用户?当名为ViewController的login控制器消失时,您能否删除您的登录凭据?否,用户未登录,仅在登录屏幕上填写两个文本字段,我希望重置这些字段@IDIDU,该函数将在“后台放置”时触发?即使我这样做了,我也会出现异常“BaseRootViewController无法识别选择器发送到实例0x…”您是否设置了rootviewcontroller?@Derbie请参阅扩展帖子,并尝试应用代码而不是现有代码。非常感谢,现在就可以了