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 - 子类中的 Swift #selector

ios - MKMapSnapshotOptions : Adding snapshot of Custom Pin Annotation View or UIView

ios - 在没有 Storyboard和导航 Controller 的情况下从 UIView 导航到 UIViewController

ios - Xcode找不到头文件

ios - 在TextField中输入DatePicker问题

ios - Alamofire/Swift - 如何在请求中添加 bool header 值

ios - 如何在 Swift 中将值从自定义单元格设置/传递到 View Controller

iphone - 将委托(delegate)从 ViewController 分离到自己的类

iphone - 在文本字段上崩溃单击 iOS 6.0 和 xcode 4.5

ios - Weirdcore 数据 react - 未检测 NSManagedObject 子类