ios - 找出 UIViewController 是否由于后退导航而出现

标签 ios swift uiviewcontroller segue

我有一个 iOS View Controller ,它可以从 SourceViewController 中显示,也可以通过单击导航栏上的“<返回”来显示。

如何确定 ViewController 是否因用户点击/触摸 " < Back " 而出现在导航栏上。

最佳答案

viewDidLoad 在返回时不会被调用,因此您可以在那里设置某种标志并在适当的位置重置它(也许viewDidAppear?)。至于每次从 SourceViewController 打开它时是否会调用 viewDidLoad 取决于您的代码 - 如果您每次都创建一个新实例,应该没问题。

举个例子:

class SampleViewController : UIViewController {
    var isOpenedFromBackNavigation = false

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        if self.isOpenedFromBackNavigation {
            // code that should be run if we navigated back here
        }
        self.isOpenedFromBackNavigation = true
    }
}

关于ios - 找出 UIViewController 是否由于后退导航而出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651589/

相关文章:

ios - 我可以在 `applicationWillTerminate:` 中存档对象吗?

ios - 让 "didSelectRowAtIndexPath"仅在点击单元格内的图像时不调用(但在其他情况下调用)?

ios - 为什么阴影反射(reflect)在 subview 上

ios - 从 AppDelegate 访问当前 View

iphone - 同时支持 iOS 6 和 iOS 5 自动旋转

Swift - 添加一个不与当前 Storyboard View 重叠的 UIView

ios - 带有大标题的 UINavigationbar 弹出动画故障

ios - 在 Facebook 上分享,手机上不显示文字。 ( swift )

ios - 单例设计潜在泄漏

class - swift - 在 vi​​ewController 中调用类函数