Swift3无法在另一个类中实现该功能

时间:2017-01-05 06:48:38

标签: ios swift3 uigesturerecognizer

我在classA中为upswipe添加了手势,如果向上滑动则必须调用classB中可用的函数,而在classA中调用classB函数时函数被调用但是在classB中没有进行UI更改。

提前致谢

class A: UIViewController {

      var swipeUp = UISwipeGestureRecognizer()
      override func viewDidLoad() {
             super.viewDidLoad()

             swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGestureUp))
             swipeUp.direction = UISwipeGestureRecognizerDirection.up
             self.view.addGestureRecognizer(swipeUp)
      }

      func respondToSwipeGestureUp(gesture: UIGestureRecognizer) {
            if let swipeGesture = gesture as? UISwipeGestureRecognizer {
                switch swipeGesture.direction {

                case UISwipeGestureRecognizerDirection.up:
                        UserDefaults.standard.set("open", forKey: "status")
                        UserDefaults.standard.synchronize()
                        print("Swiped up")
                        B().moveUp()
               default:
                        break
               }
          }
     }
}

class B: UIViewController {

    func moveUp()  {

        let status = UserDefaults.standard.object(forKey: "status") as! String
        if status .isEqual("open")
        {
            let fullView1: CGFloat = 100
            self.view.frame = CGRect(x: 0, y: fullView1, width: self.view.frame.width, height: self.view.frame.height)

        }
        else
        {

        }
    }
}

2 个答案:

答案 0 :(得分:1)

B类UI不会更改,因为您没有在导航上显示B controller。我的意思是说,如果您controller A当前出现在屏幕上SwipeGesture事件中,那么您正在使用屏幕上尚未显示的controller B更新用户界面。你为什么这样做以及什么时候你推controller B。 我希望你得到你的答案。

答案 1 :(得分:0)

将您的方法设为类方法

class func moveUp() {

// your code

}

并将其命名为:

B.moveUp()