Ich habe eine Delegation/Initialisierung Problem kann ich nicht zu lösen scheinen. Grundsätzlich habe ich ein Storyboard mit ein paar View-Controllern. Im Storyboard befindet sich dieser "View-Controller", der aus einer UITableview besteht, die ich mit einer DeviceListViewController-Klasse verbunden habe, um die Informationen zu füllen. Hier habe ich das folgende Protokoll erklärt:Delegation in einer Klasse in Swift
protocol DeviceListViewControllerDelegate: UIAlertViewDelegate {
var connectionMode:ConnectionMode { get }
func connectPeripheral(peripheral:CBPeripheral, mode:ConnectionMode)
func stopScan()
func startScan()
}
und innerhalb der Klasse selbst ich habe eine init Methode wie folgt (was wahrscheinlich falsch ist, aber ich wusste nicht, was ich sonst an dieser Stelle tun könnte):
convenience init(aDelegate: DeviceListViewControllerDelegate) {
self.init()
self.delegate = aDelegate
}
Dann gibt es diese zweite Klasse, die nicht mit einem View-Controller namens BLEMainViewController verbunden ist. Es sollte ein Singleton sein, der alle Bluetooth-Aktionen behandelt. Das bedeutet, dass ich in der Lage sein sollte, etwas zwischen DevicelistViewController und BLEMainViewController zu delegieren.
Im BLEMainViewController ich die DeviceListViewControllerDelegate geerbt haben:
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)
}
Das Problem ist, dass BLEMainViewController nicht an View-Controller angeschlossen ist (und es sollte nicht IMO), aber es muss als Singleton initialisiert werden in um alle BLE-Aktionen zu bearbeiten. Kann mir jemand in die richtige Richtung (mit einem Beispiel vorzugsweise) zeigen, wie man das umgeht?
hilft so, warum haben Sie es einen Controller Ansicht gemacht? – Wain
Nun, ich musste das tun, um Alerts usw. zu zeigen, aber ich dachte nur, dass das eigentlich wirklich dumm ist:/ – Reshad
Ich habe jetzt eine normale Klasse daraus gemacht. – Reshad