繁体   English   中英

快速在视图之间传递布尔标志

[英]Passing the Boolean Flag between the views in swift

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

我已经做到了,但是没有用。 可以说我的包含视图的视图控制器是第三个视图控制器,并且我正在从第一个和第二个视图控制器访问该视图控制器。

//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之间的差异是您的问题而不是实际代码中的错别字,并且mapViewFirst和mapViewControllerObj以及mapViewSecond和mapViewControllerObj之间的区别也只是问题中的错别字,而不是您的实际代码中的错别字。

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

为了获得您想要的功能,请将loadData()从viewDidLoad移到viewWillAppear,当将视图控制器推入堆栈时将被调用。 (并确保按预期方式覆盖viewWillAppear,而不是像从viewDidLoad()中省略一样)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM