我是iOS开发的初学者。我要做的是删除 2 个字段(登录名和密码)的内容,当应用程序在后台移动到 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
当您更新用户界面时,这就是此方法的用途。希望这有帮助。
//扩展你能试着把这段代码放到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
}
您可以通过发布通知来执行此操作。在这里代替你的函数名称写下你的函数名称,这是要删除字段
在登录视图控制器中,编写以下代码。
- (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];
}
希望这对你有帮助。