我在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
{
}
}
}
答案 0 :(得分:1)
B类UI不会更改,因为您没有在导航上显示B controller
。我的意思是说,如果您controller A
当前出现在屏幕上SwipeGesture
事件中,那么您正在使用屏幕上尚未显示的controller B
更新用户界面。你为什么这样做以及什么时候你推controller B
。
我希望你得到你的答案。
答案 1 :(得分:0)
将您的方法设为类方法
class func moveUp() {
// your code
}
并将其命名为:
B.moveUp()