我有2个视图控制器,在vC1中声明了一个变量isShowListAsked : Bool = false
,在单击map按钮时转到vC2。在vC2中,有一个名为 List 的按钮。
我要那个 :
单击 List 按钮后,它返回到vC1,并且vC1变量值应更改为true。但这仍然是错误的。
请帮助我。
谢谢。
点击 列表 按钮后,我可以返回到vC1,但无法设置 isShowListAsked = true >。我尝试将{}设置为{}。
在vC1中:
class vC1 : UIViewController
{
var isShowListAsked : Bool = false
var IsShowListAsked : Bool {
get {
return isShowListAsked
}
set{
isShowListAsked = newValue
}
}
}
然后在In vC2中单击:
class vC2 : UIViewController
{
var vc = vC1()
@IBAction func mapListSegmentTapped(_ sender: Any) {
if mapListSegment.selectedSegmentIndex == 1
{
vc.IsShowListAsked = true
}
if mapListSegment.selectedSegmentIndex == 0
{
vc.IsShowListAsked = false
}
}
}
回去后,我正在检查viewWillappear()中的变量值
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print(" isshowListAsked = \(IsShowListAsked) ") // print false
}
预期结果:
print(" isshowListAsked = \(IsShowListAsked) ") // print True
实际结果:
print(" isshowListAsked = \(IsShowListAsked) ") // print false
答案 0 :(得分:0)
使用 Closures
解决您的问题陈述。
在closure
类型的VC2
中创建一个((Bool)->())?
,并在true/false
方法中使用相关的mapListSegmentTapped(_:)
值进行调用,即
class VC2: UIViewController {
var handler: ((Bool)->())?
@IBAction func mapListSegmentTapped(_ sender: Any) {
if mapListSegment.selectedSegmentIndex == 1 {
self.handler?(true)
} else if mapListSegment.selectedSegmentIndex == 0 {
self.handler?(false)
}
}
}
现在,当您是closure
的{{1}}的{{1}}的{{1}}时设置此presenting
instance