【问题标题】:How can I check if my UIViewController got viewed when it appears to the user in my Swift app?如何检查我的 UIViewController 在我的 Swift 应用程序中向用户显示时是否被查看?
【发布时间】:2016-04-28 22:15:39
【问题描述】:

我有一个带有按钮的 UIViewController。这个按钮有一个连接到另一个 UIViewController 的 segue,并且 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 的功能可以在关闭第二个控制器时起作用)

【问题讨论】:

    标签: ios swift uiviewcontroller viewwillappear


    【解决方案1】:

    您必须使用UnwindSegueUnwindSegue 为您提供了一种“展开”导航堆栈并指定要返回的目的地的方法。你的viewWillAppear 再也不会打电话了,因为已经出现了。

    如果你想知道UnwindSegue是什么,你可以查看这个答案:stackoverflow anser

    如果你想知道怎么做,我推荐这些链接:

    apple documentation about unwind segues

    tutorial about unwind segues

    youtube videotutorial

    【讨论】:

    • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多