[英]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.