- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 TwitterKit 制作 Twitter 客户端应用程序。
初始 VC 是带有登录按钮的 loginVC。登录后,它会呈现 tableviewVC,其中显示推文列表。
如果用户之前已经登录并且 session 仍然存在,我想将用户直接重定向到 tableviewVC。
因此,我在 viewWillAppear 中实现了检查登录用户并显示 tableviewVC 的代码,但尽管用户 session 仍然存在,但 tableviewVC 从未显示。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tweetVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
present(tweetVC, animated: true, completion: nil)
}
}
但是当我在 viewDidAppear 中实现相同的代码时,当用户 session 保持时,tableviewVC 就会出现。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tweetVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
present(tweetVC, animated: true, completion: nil)
}
}
我不明白为什么当代码在 viewWillAppear 中时它不起作用。
有人可以帮我解释一下吗?
最佳答案
正如方法名称所解释的,
viewWillApper
表示当前 viewController 的 View 将出现,但仍然不在窗口上。因此,在这种情况下,您无法在窗口中未显示的 viewController 上呈现任何 viewController。
viewDidApper
表示当前 viewController 的 View 正在窗口上显示,这就是您能够呈现新 viewController 的原因。
PS:正如您想要实现的那样,在已经登录的情况下显示 listVC。我建议在 AppDelegate
的 didFinishLaunchingWithOptions
方法中设置窗口的 rootViewController
。
喜欢:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
var rootVC: UIViewController?
if <check weather user is already logged in> {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
rootVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
}
else {
rootVC = <you loginVC object>
}
self.window?.rootViewController = rootVC
self.window?.makeKeyAndVisible()
return true
}
关于ios - Swift - 如果用户已经登录,为什么在重定向用户时我应该使用 viewDidAppear 而不是 viewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52557993/
从后台返回到我的 iPhone 应用程序后,未调用方法 viewDidAppear。 有没有人能解决这个问题? 每次显示我的 MainViewController 时(即使从后台返回后),我都需要调用
我想在出现特定选项卡时执行某些操作。意思是,用户单击了选项卡 View 的选项卡按钮。发生这种情况时 viewDidAppear 不会触发。我还能如何 Hook 选项卡单击事件? 最佳答案 你可以实现
当用户启动应用程序时,我希望它显示 stockholm.xib它在这里: -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:a
当前遇到一个问题,我在使用显示转场到单独的弹出 View 后尝试更新我的 View 。初始 viewDidAppear 在加载时被触发,但是在我关闭其他 View 并转换回另一个 View 后,它不会
我的想法是这个 View 何时出现。我想让它按位置检测。所以如果用户在新加坡。新加坡细胞将被重点关注。有什么办法可以实现吗?我确实看到了这个功能,但不知道如何使用 didHighlightRowAtI
我有一个 UItextview,我可以在里面写入数据类,我可以在我的 View 中的任何地方提供数据,在 ViewDidAppear 函数中我传递了我的数据,但它有点慢。文本在 0.2-0.3 秒后出
我有 2 个 View Controller ,vc1 和 vc2。当我想加载 vc2 时,从 vc1 调用模态转场。假设我在显示 vc2 时将应用程序置于后台。当应用程序重新打开到之前关闭的 Vie
我正在我的应用程序的 viewDidApepar 中对一个带有动画的方法进行简单调用, Storyboard中动画 View 的初始位置是 (10 , 5) - 几乎隐藏在主视图之外。 -(void)
我遇到了一些非常奇怪的情况。 我的代码看起来像这样: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBund
在我的代码中,我有一个 viewWillAppear 调用,类似于下面的调用,旨在将某些对象移开。 override func viewWillAppear(_ animated: Bool) {
我有一个 HomeViewController 正在使用 segue 打开一个 WelcomeViewController 并且来自 Sheet 类型。 在 WelcomeViewController
我正在尝试为两个文本字段和一个标签创建动画幻灯片。然而,出于某种原因,每次您尝试单击文本字段时,viewDidAppear() 函数都会运行,导致它们继续动画。有人有什么想法吗? 这是我的函数代码:
我注意到当按下主屏幕然后再次启动时,viewDidAppear 没有被调用。这就是为什么在我按下主页按钮然后再次启动我的应用程序后我的动画停止工作的原因。有什么办法可以解决这个问题吗? overrid
我设置了一个 void如果用户触摸按钮,则从另一个类调用该方法。但是,我收到“其 View 不在窗口层次结构中”的错误,然后我发现了这个:whose view is not in the window
背景:我想确保我的 viewControllers 在出现时正确旋转。我的 viewControllers 有很好的代码来管理可见时的旋转和方向。 问题:给定 NavigationController
我遵循了这个指南: https://codewithchris.com/iphone-app-connect-to-mysql-database/#app 我在覆盖功能上遇到了这个问题: Argume
如果我有一个名为 B 的 UIViewController。如果我将 UIViewController C 添加为 B 的 subview / subview Controller 。然后我也将 D
是否有标志指示 viewDidAppear 已被调用? 我想我可以在子类化的 UIViewController 中创建我自己的标志,但我想知道是否已经有了一些东西。 我问的原因是因为我想在某些服务器端
在我的主 UIViewController 中,我添加了一个主屏幕 View Controller 作为 subview : UINavigationController *controller
首先,我创建了一个 MainViewController。然后在 MainViewController 中,我做 [self presentViewController:modalViewContro
我是一名优秀的程序员,十分优秀!