Как вызвать метод из другого класса в Swift 4.0

Возможно, это связано с тем, что после прокрутки идентификаторов элементов просмотра ресайклеров запутываются. Попробуйте переопределить следующие методы в Adapter

@Override
public long getItemId(int position) {
            return position;
}

@Override
public int getItemViewType(int position) {
       return 1;
}
-1
задан aswiftnewbie27 19 January 2019 в 02:59
поделиться

1 ответ

Я предполагаю, что WheelDelegate создан в Main как объект.

Вы можете сделать это несколькими способами:

1) Самый распространенный способ, который я видел, - это создание протокола, а также некоторых делегатов.

Внутри класса Main, прямо под всем импортом, вы можете сделать.

protocol ViewControllerTalkingDelegate {
    func methodToCall()
}

Внутри WheelDelegate вы добавляете это как глобальную переменную

var delegate:ViewControllerTalkingDelegate?

Затем, всякий раз, когда вы создаете WheelDelegate внутри Main

let wheelDelegate = WheelDelegate()
wheelDelegate.delegate = self

Затем внутри Main внизу вы можете сделать

extension Main:ViewControllerTalkingDelegate {
    func methodToCall() {
         //Do Something
    }
}

Теперь внутри WheelDelegate вы можете сделать delegate.methodToCall().

2) Другой способ, который я видел, - передать 1-й класс как переменную 2-му классу.

Внутри WheelDelegate добавьте глобальную переменную

var myViewController:Main?

Затем вы можете либо взять Main в качестве параметра при инициализации, либо при создании WheelDelegate вы можете сделать

var wheelDelegate = WheelDelegate()
wheelDelegate.myViewController = self

] Затем внутри WheelDelegate вы можете сделать

self.myViewController.methodToCall()
0
ответ дан impression7vx 19 January 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: