【问题标题】:Passing the Boolean Flag between the views in swift快速在视图之间传递布尔标志
【发布时间】:2017-01-06 09:08:20
【问题描述】:

我有一个包含一些文本标签和多个其他属性的视图控制器。我想使用该视图控制器来编辑视图和查看视图的内容。现在我要做的是传递标志,以便它指示请求是编辑字段还是查看字段。

我已经这样做了,但没有工作。假设我的包含视图的视图控制器是第三个视图控制器,我正在从第一个和第二个视图控制器访问这个视图控制器。

//In third View COntroller
var isEdit: Bool! = false
func viewDidLoad(){
    self.loadData()
}
 override func loadData{
    if isEdit == false{
       //print this is edit mode
    }
    else if isEdit == true{
      //This is view mode
    }
  else{
  //print error navigtion
     }
}

并且我正在从第一个视图控制器上的按钮单击操作访问此视图控制器

let mapViewFirst = self.storyboard?.instantiateViewControllerWithIdentifier("ThirdViewController") as? ThirdViewController
mapViewFirst.isEdit == true
self.navigationController?.pushViewController(mapViewFirst!, animated: true)

和从 secondViewController 一样

let mapViewSecond = self.storyboard?.instantiateViewControllerWithIdentifier("ThirdViewController") as? ThirdViewController
mapViewSecond.isEdit == false
self.navigationController?.pushViewController(mapViewSecond!, animated: true)

它总是在isEdit == false上运行
即视图控制器始终处于编辑模式,它永远不会移动到其他条件。谁能找到更好的解决我的问题的方法。

【问题讨论】:

  • 您有一个名为isEdit 的变量,但您设置的变量名为iseditMode...它应该如何工作?另外,为什么isEdit 是未包装的可选而不是普通的Bool?更奇怪的是,您实例化的视图控制器与您推送的视图控制器不同。
  • 不是应该重写func viewDidLoad()吗?这甚至被称为?
  • 对错误感到抱歉,现在我已经为我的问题添加了清晰度。现在一切都在工作,除了它总是在 isEdit == false 上执行。那么我在这里错了什么。

标签: ios swift oop


【解决方案1】:

假设 isEdit 和 iseditMode 之间的区别是您的问题中的拼写错误,而不是您的实际代码中的拼写错误,并且 mapViewFirst 和 mapViewControllerObj 以及 mapViewSecond 和 mapViewControllerObj 之间的差异也只是您的问题中的拼写错误,而不是您的实际代码。

然后它不起作用,因为 viewDidLoad() 在视图控制器加载到内存时被调用,这是在调用 instantiateViewControllerWithIdentifier 时发生的。

要获得您想要的功能,请将 loadData() 从 viewDidLoad 移动到 viewWillAppear,当视图控制器被推送到堆栈时,它将被调用。 (并确保您按照应有的方式覆盖 viewWillAppear,而不是像您从 viewDidLoad() 中省略的那样)

【讨论】:

  • 好的,我已经编辑了我的问题。它是 isEdit 不是 editmode。我仍然没有得到想要的输出,它总是在 isEdit == fasle 上运行。你能帮帮我吗
  • 您在故事板中的场景之间有转场吗?如果是这样,您应该使用 segue 在视图控制器之间移动,而不是尝试自己创建并将它们推送到堆栈上。如果您使用 segues,那么过去有很多问题如何在视图控制器之间传递数据,即stackoverflow.com/questions/39921558/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多