Возможно, это связано с тем, что после прокрутки идентификаторов элементов просмотра ресайклеров запутываются. Попробуйте переопределить следующие методы в Adapter
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return 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()