【问题标题】:Get the previous UINavController [closed]获取之前的 UINavController [关闭]
【发布时间】:2018-01-29 22:30:22
【问题描述】:

如何引用之前的视图控制器。我想使用类似以下的 if 语句:

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

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

【问题讨论】:

  • “前一个视图控制器”到底是什么意思?
  • 对不起,我应该更好地解释一下自己。因此,如果我单击视图控制器 A 上的一个按钮,该按钮将我带到视图控制器 B,我想获得对视图控制器 A 的引用。这有意义吗? @AshleyMills
  • B 是否呈现为模态 VC?还是使用 UINavigationVC 推送?
  • 呈现为模态 VC @nathan

标签: ios swift3 uinavigationcontroller xcode8


【解决方案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
        } 
    }
}

如果从您的NotificationViewController 演示,则设置mvc.mode = .notify

使用此方法,MyViewController 无需了解其呈现方式或呈现方式。你可以把它推到导航栈上,或者把SearchViewController改成DownloadViewController,没关系。

【讨论】:

  • 忽略我最后的评论。它完美地工作!非常感谢
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2013-03-13
  • 1970-01-01
  • 2016-07-05
相关资源
最近更新 更多