upswipeのクラスAにジェスチャを追加しました。スワイプするとclassBで使用可能な関数を呼び出す必要があり、classAでclassB関数を呼び出しても関数は呼び出されますが、クラスBでは作成されません。事前にSwift3が別のクラスの関数を実装できません
おかげ
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
{
}
}
}
あなたは 'B()。moveUp()'をチェックしましたか?Bはまだ紹介されていますか? – nynohu
クラスBのインスタンスを新規作成しています...クラスBのインスタンスを保持します –
どのようにAからBに移行していますか?プロトコルと委譲パターンはここで関連します。 –