当我的 UIViewController 在我的 Swift 应用程序中显示给用户时,如何检查它是否被查看?
How can I check if my UIViewController got viewed when it appears to the user in my Swift app?
我有一个带按钮的 UIViewController。这个按钮有一个 segue 连接到另一个 UIViewController,并且 segue 的类型是 Show
。它看起来像这样:
self.performSegueWithIdentifier("myIdentifier", sender: user)
函数prepareForSegue
是:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "myIdentifier"){
if let frD = segue.destinationViewController as? MyNextClass,
...
现在,当用户按下按钮时,新的 UIViewController 会全屏弹出。它还有一个名为 exitButton
的按钮,可以做一件事:
@IBAction func exitbuttonaction(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
当用户按下它时 - 他们关闭了这个视图控制器,他们看到了前一个。之前的容器有一个 viewWillAppear
函数,但每次用户从第二个控制器返回时都不会调用它。为什么不呢,因为它每次都会出现在用户面前?
另外,请问有没有其他方法可以区分父控制器是什么时候出现在用户面前的? (也许一些类似于 viewWillAppear
的其他功能可以在关闭第二个控制器时起作用)
您必须使用 UnwindSegue
。 UnwindSegue
为您提供了一种“展开”导航堆栈并指定要返回的目的地的方法。你的viewWillAppear
再也不会打电话了,因为已经出现了。
如果你想知道什么是UnwindSegue
,你可以查看这个答案:Whosebug anser
如果你想知道怎么做,我推荐这些链接:
我有一个带按钮的 UIViewController。这个按钮有一个 segue 连接到另一个 UIViewController,并且 segue 的类型是 Show
。它看起来像这样:
self.performSegueWithIdentifier("myIdentifier", sender: user)
函数prepareForSegue
是:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "myIdentifier"){
if let frD = segue.destinationViewController as? MyNextClass,
...
现在,当用户按下按钮时,新的 UIViewController 会全屏弹出。它还有一个名为 exitButton
的按钮,可以做一件事:
@IBAction func exitbuttonaction(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
当用户按下它时 - 他们关闭了这个视图控制器,他们看到了前一个。之前的容器有一个 viewWillAppear
函数,但每次用户从第二个控制器返回时都不会调用它。为什么不呢,因为它每次都会出现在用户面前?
另外,请问有没有其他方法可以区分父控制器是什么时候出现在用户面前的? (也许一些类似于 viewWillAppear
的其他功能可以在关闭第二个控制器时起作用)
您必须使用 UnwindSegue
。 UnwindSegue
为您提供了一种“展开”导航堆栈并指定要返回的目的地的方法。你的viewWillAppear
再也不会打电话了,因为已经出现了。
如果你想知道什么是UnwindSegue
,你可以查看这个答案:Whosebug anser
如果你想知道怎么做,我推荐这些链接: