获取以前的UINavController

时间:2017-08-21 19:06:22

标签: ios swift3 uinavigationcontroller xcode8

如何参考上一个视图控制器。我想使用if语句,如下所示:

if previousViewController = searchController {
 //preform a method
}else if previousViewController = notificationController {
 //preform another method
}

但是如何引用上一个视图控制器?因此,例如,如果我单击视图控制器A上的一个按钮,让我查看控制器B,我想以某种方式获得对视图控制器A的引用。我已经查看了类似的问题,但我似乎无法找到一个足以帮助我的答案。提前致谢

1 个答案:

答案 0 :(得分:1)

我首选的方法是向ViewControllerB添加一个属性以显示它的用法。例如......

class MyViewController: UIViewController {

    enum Mode {
        case search, notify
    }

    var mode = Mode.search

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

    func configure() {
        switch mode {
        case .search:
            // configure for search results
        case .notify:
            // configure for notification 
        }
    }
}

然后在呈现视图控制器中:

class SearchViewController: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {        
        if let mvc = segue.destination as? MyViewController {
            mvc.mode = .search
        } 
    }
}

或设置mvc.mode = .notify,如果从NotificationViewController

出示

使用此方法,MyViewController并不需要知道如何或通过它呈现的内容。您可以将其推送到导航堆栈,或将SearchViewController更改为DownloadViewController,这不重要。