- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从我的应用程序中显示一个特定的 ViewController(在 swift 中定义),但它不起作用。这是我正在做的事情:
我在文件 Main.storyboard 的 Storyboard中定义了一个登录屏幕。该 Storyboard有一个 UINavigationController 进入一个带有 Storyboard ID“LoginVC”的屏幕。
当我第一次运行该应用程序时,一切都很好。但是当用户后台应用程序(按下主页按钮)时,我会自动注销用户,这仅意味着在 userDefaults 中将变量“loggedin”设置为 false。
当用户按下应用程序图标以启动/前台应用程序时,它会返回到它在后台运行时所在的屏幕,这对于应用程序来说是非常标准的行为,但这不是我想要的。
在 AppDelegate applicationDidBecomeActive 中,我想检查用户默认值并查看我们是否已登录,如果没有,那么我想显示登录屏幕“LoginVC”。
我的代码如下所示。该代码不会引发任何错误,但它永远不会进入登录屏幕 - 它只是停留在同一个旧屏幕上。我究竟做错了什么?
还要注意 MyLoginVC 是在 swift 中定义的,所以我在 AppDelegate 中导入了 -Swift.h。
再一次,一切都编译了,它看起来应该运行,它认为它已注销并尝试显示登录屏幕,但它只是.doesn't.work。有任何想法吗?
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"applicationDidBecomeActive");
BOOL loggedIn=[self.engine is_logged_in];
if (loggedIn) {
NSLog(@"self.engine says we are logged in");
} else {
NSLog(@"self.engine says we are NOT logged in");
[self showLoginUI];
NSLog(@"Are we at login screen yet?");
}
}
- (void) showLoginUI {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
MyLoginVC *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"LoginVC"];
if (loginVC) {
NSLog(@"loginVC is something");
} else {
NSLog(@"loginVC is nil");
}
//
// Neither of these works!
//
//[self.window.rootViewController.navigationController presentViewController:loginVC animated:YES completion:nil];
//[self.window.rootViewController.navigationController pushViewController:loginVC animated:YES];
}
最佳答案
通过反复试验、耐心和大量搜索,我偶然发现了正确的答案,或者至少是一种可行的方法。这里是:
我的 Storyboard顶部有一个 UINavigationController,然后连接到一个 LoginVC(我不是一个 Storyboard人,而且我没有编写界面代码,所以我怀疑“连接”是错误的词,但你明白了主意)。 UINavigationController 的检查器 IF 为 @"LoginScreen",而 Login VC 的 ID 为 @"LoginVC"。 LoginVC 类已经正确处理了应用程序启动的情况,并正确检查用户是否已经登录,如果用户已经登录,则转换到主应用程序屏幕。我需要处理的情况是用户最小化应用程序(通过按主页按钮)和我重载 AppDelegate applicationDidEnterBackground 以注销用户的位置。
当用户恢复应用程序(通过按下图标)时,应用程序将进入前台并再次变为事件状态。在 applicationDidBecomeActive 中,我检查 userDefaults 以查看用户是否仍然登录。如果用户仍然登录,我不做任何其他事情。如果用户没有登录,我调用我自己的 AppDelegate 函数 showLoginUI 来告诉应用程序切换到登录界面。这是该功能:
-(void) showLoginUI {
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"LoginScreen"];
}
关于ios - 从 AppDelegate 呈现登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130202/
我只有一个 Objective-C 项目,我想使用 AppDelegate 访问我的 xcdatamodel,但是当我将 AppDelegate.swift 添加到我的项目时,它显示了一个编译问题,它
我正在编写一些代码。 import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, XP
我们可以通过这些方式使用 AppDelegate 的对象... 1) AppDelegate *app; // Globally declared app = (AppDelegate*)[[UIAp
我有一个像往常一样有 AppDelegate 的应用程序。我有一个 AppDelegate 的扩展,像这样: extension AppDelegate { func doSomething(
我的 appDelegate 中有两种类型的 var:int 和 NSMutableArray我可以访问 viewController 中的 int var,但无法访问 NSMutableArray
我创建了一个新项目并想将 App Delegate 从 AppDelegate 重命名为 FlickrAppDelegate。我想我在适当的地方重命名并且能够构建但我收到以下错误: 它构建正常,但显然
我正在尝试使用名为 AWSAppSync 的适用于 iOS 的 Amazon Web Serivces SDK。我发现good instructions for Swift 。我将尝试使问题更普遍地适
我在尝试设置自动登录功能时遇到问题。 我之前对根 ViewController 进行了一些研究,发现我现在需要使用 SceneDelegate 来实现自动登录功能,而不是使用 AppDelegate。
我注意到在默认使用 ARC 的最新版本的 Xcode 中,当您开始一个新项目时 Xcode 为您生成的 main.m 文件使用 NSStringFromClass([AppDelegate class
AppDelegate 它继承UIResponder , 并且实现了UIApplicationDelegate协议 。UIApplicationDelegate 协议中定义了很多app不同状态下触发的
当我将以下覆盖添加到 AppDelegate 时: public override void HandleAction(UIApplication application, string action
我正在设计一个相当大的应用程序,启动时它将与几个不同的服务器创建 session 。由于他们正在创建一个在应用程序的所有部分中使用的 session ,因此我认为在应用程序委托(delegate)中最
Xcode 中给出的 AppDelegates 方法到底是什么?我的应用程序中有很多类(class)。现在我想要的是我有 AudioStreamer 类,并且我必须在大多数其他类中使用该类...并且我
我没有整天都碰过AppDelegate.h文件,突然我收到3个错误... // AppDelegate.h #import //!Expected selector for Objective-
我知道没有必要保留委托(delegate),以避免保留循环。我在一次采访中碰巧遇到了一个问题,“如果保留了 appDelegate 会怎样?”。我对此没有答案,并根据我的知识在这里寻求答案。谢谢 最佳
我正在快速制作一个应用程序,但我遇到了一些问题。我正在尝试运行我的应用程序,但每次都会出现错误。 这是完整的错误: *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序
- (void)applicationDidFinishLaunching:(UIApplication *)application { NSError *error = nil;
在AppDelegate.h我创建了以下属性, @property (strong, nonatomic) NSMutableDictionary *googleUserDetailsDictiona
我正尝试按照 Ray Wenderlichs 教程在 cocos2d 游戏中使用 UIKit:How To Integrate Cocos2D and UIKit 但是我卡在了这一点上: Then,
我正在开发一个使用 CoreLocation 来管理 iBeacon 的 iOS 应用程序。我在 AppDelegate 和 ViewController 中都有 Beacon 检测,但我希望 App
我是一名优秀的程序员,十分优秀!