【问题标题】:Find out from where ViewController was opened查看 ViewController 的打开位置
【发布时间】:2018-09-03 09:57:44
【问题描述】:

我有一个 TableViewController 和 2 种方法可以到达那里。 一个是来自 Viewcontroller 的 segue(show),它是导航控制器的根控制器,它本身是我的选项卡栏控制器的选项卡。 其次,tableVC也是另一个Navigation Controller的根VC,也就是那个Tab Bar Controller中的一个tab。这是一个插图:

现在我想检查viewDidLoad 如果我的 TableVC 是通过第一种方式还是通过第二种方式调用的。我怎样才能知道呢?

【问题讨论】:

  • 快速完成,但可能不是最好的方法(在prepare(forSegue:) 中传递枚举/信息怎么样),您可以使用self.navigationController 并检查它有多少VC,或者上一个是什么。
  • 只需在 TableVC 代码中使用屏幕发送到 TableVC 的 var,默认值为 0 。例如,在导航的情况下,这将是 1。无需在 segue 中传递它,因为来自导航演示文稿时它只会是“1”

标签: ios swift uiviewcontroller


【解决方案1】:

您可以在视图控制器中添加一个属性来指示它的来源……

class MyTableViewController: UITableViewController {

    enum Source {
        case productList, basket
    }

    var source: Source!
}

然后

override func prepareForSegue(segue: UIStoryboardSegue, sender: Any?) {
    if let vc = segue.destination as? MyTableViewController {
         vc.source = .productList
    }
}

【讨论】:

    【解决方案2】:

    非常简单,只需在要显示的 viewController 上添加一个 var,假设 var vcOpenedBy = ""

    现在当启动这个 ViewController 时,只需使用这个 var 并像这样打印任何你觉得舒服的东西

    让 vc = VcController(nibName:"",bundle:nil) vc.vcOpenedBy = "导航方法"

    在你的 segue 中你也可以使用这个 vcOpenedBy 并使用字符串“SqgueMethod”

    现在在 viewDidLoad() 中的那个 viewController 上 只需打印此 vc 即可。就是这样

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 2022-08-15
      • 2021-12-14
      • 2012-12-29
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多