我有一个包含一些文本标签和多个其他属性的视图控制器。我想使用该视图控制器来编辑视图和查看视图的内容。现在我要做的是传递Flag,以便它指示请求是用于编辑字段还是查看字段。
我已经这样做但没有奏效。让我说我的包含视图的视图控制器是第三个View Controller,我从第一个和第二个视图控制器访问这个视图控制器。
//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
上运行
即视图控制器始终处于编辑模式,它永远不会移动到其他条件。任何人都可以找到解决我问题的更好方法。
答案 0 :(得分:2)
假设isEdit和iseditMode之间的区别在你的问题中是一个拼写错误,而不是在你的实际代码中,而且mapViewFirst和mapViewControllerObj以及mapViewSecond和mapViewControllerObj之间的差异也只是你问题中的拼写错误,而不是你的实际代码。< / p>
然后它无法正常工作,因为在视图控制器加载到内存时调用viewDidLoad(),这是在调用instantiateViewControllerWithIdentifier时发生的。
要获得您想要的功能,请将viewDidLoad中的loadData()移动到viewWillAppear,当视图控制器被推送到堆栈时将调用它。 (并确保按照您的意图覆盖viewWillAppear,而不是像在viewDidLoad()中省略的那样)