如何从另一个类更改在一个类中声明的变量值?

时间:2019-06-06 06:37:04

标签: swift get set

我有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

1 个答案:

答案 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