У меня проблема с делегацией/инициализацией, которую я не могу решить. В основном у меня есть раскадровка с несколькими контроллерами View. Внутри раскадровки есть этот «Контроллер просмотра», который состоит из UITableview, который я связал с классом DeviceListViewController, чтобы он заполнял эту информацию. Вот здесь я объявил следующий протокол:Делегирование класса в Swift
protocol DeviceListViewControllerDelegate: UIAlertViewDelegate {
var connectionMode:ConnectionMode { get }
func connectPeripheral(peripheral:CBPeripheral, mode:ConnectionMode)
func stopScan()
func startScan()
}
и внутри самого класса У меня есть метод инициализации, как это (что, вероятно, неправильно, но я не знаю, что еще я мог сделать в этой точке):
convenience init(aDelegate: DeviceListViewControllerDelegate) {
self.init()
self.delegate = aDelegate
}
Тогда есть этот второй класс, который не подключен к любому контроллеру вида BLEMainViewController. Это должен быть singleton, обрабатывающий все действия bluetooth. Это означает, что я должен иметь возможность делегировать некоторые вещи между DevicelistViewController и BLEMainViewController.
В BLEMainViewController я унаследовал DeviceListViewControllerDelegate:
class BLEMainViewController: NSObject, DeviceListViewControllerDelegate {
var deviceListViewController:DeviceListViewController!
var delegate: BLEMainViewControllerDelegate?
static let sharedInstance = BLEMainViewController()
}
override init() {
super.init()
// deviceListViewController.delegate = self
deviceListViewController = DeviceListViewController(aDelegate: self)
}
Проблема заключается в том, что BLEMainViewController не привязана к какому-либо View Controller (и она не должна ИМО), но она должна быть инициализирована как синглтон в чтобы обрабатывать все действия BLE. Может ли кто-нибудь указать мне в правильном направлении (предпочтительно с примером) о том, как обойти это?
так почему вы сделали это вид контроллера? – Wain
Ну, мне нужно было сделать это, чтобы показать оповещения и т. Д., Но я просто подумал, что на самом деле это действительно глупо делать:/ – Reshad
Я сделал обычный класс этого сейчас. – Reshad