Ich entwickle eine App, die nach BLE-Geräten in der Nähe sucht, eine Verbindung zu ihnen herstellt und mit dem verbundenen Gerät kommuniziert. Ich habe versucht, es in 2 View-Controller, Controller-A und Controller-B zu tun. Controller-A sucht nach Geräten in der Nähe und stellt eine Verbindung zu ihnen her. Controller-B würde Daten zum angeschlossenen Gerät austauschen. Controller-A erweitert CBCentralManagerDelegate. Mein Problem ist: Wenn meine App zum Controller-B wechselt, erhält sie nicht die Rückrufe von CBCentralManager. Ich muss CBCentralManager in Controller-B erneut initialisieren. Ich muss auch das Gerät von Controller-A trennen und erneut in Controller-B verbinden. Gibt es einen besseren Weg, es zu tun? Vielen Dank.Fortsetzung der BLE-Aktivitäten auf dem nächsten View-Controller
4
A
Antwort
6
Geben Sie Ihren BLE-Code an einer zentralen Stelle ein, z. BLEMaganer (besser) oder AppDelegate (so). So können sich ControllerA und ControllerB dieselbe centrolManager-Instanz teilen.
Zum Beispiel haben Sie derzeit eine Eigenschaft centralManager
in ControllerA, und implementieren Sie seine Stellvertreter in ControllerA. Sie greifen auf centralManager von controllerA.centralManager
zu.
Verschieben Sie die centralManager
Eigenschaft zu AppDelegate
, sowie anderen verwandten Code. Dann können Sie centrolManager Instanz von
(UIApplication.sharedApplication().delegate as! AppDelegate).centralManager.
Verwandte Themen
- 1. Fortsetzung einer Erklärung auf der nächsten Zeile mit einem Kommentar
- 2. auf Klick auf dem Etikett auf der nächsten Seite
- 3. Fortsetzung nach fehlgeschlagener Assertion
- 4. Fortsetzung auf einer anderen Aktivität
- 5. async/Warten auf die Fortsetzung
- 6. Filterarray basierend auf dem nächsten Objekt
- 7. sys.getrefcount Fortsetzung
- 8. Überprüfung, ob ein ViewController auf dem Navigationsstapel existiert
- 9. Memoize Fortsetzung Stilfunktion übergeben
- 10. svn Fortsetzung abgebrochen Kasse
- 11. iPhone - erlauben Landschaftsausrichtung auf nur einem viewcontroller
- 12. Typ 'ViewController' entspricht nicht dem Protokoll 'UICollectionViewDataSource'
- 13. Fortsetzung der Musikwiedergabe auch beim Seitenwechsel
- 14. Run-Methode von Viewcontroller A auf B Viewcontroller
- 15. touchesMoved Fortsetzung Punkt?
- 16. Typ viewcontroller entspricht nicht dem Protokoll uitaviewviewdatasource
- 17. Eclipse-Fortsetzung Einzug
- 18. Python 2.5.2 Fortsetzung
- 19. Tricky Frage auf der nächsten Aufzeichnungen
- 20. Algorithmus zum Finden des nächsten Objekts auf dem 2D-Gitter
- 21. Stackoverflow in Fortsetzung Monade
- 22. am nächsten Wert auf eine Zahl in dem Feld erhält
- 23. Präsens Viewcontroller auf andere programmatisch
- 24. Wie verhindert man Bootstrap Karussell von der Fortsetzung der Folie Animation nach dem Klicken auf rechts/links Kontrollen
- 25. Wiedergabe von Video von URL basierend auf dem nächsten Bake
- 26. Wie zwei Datenrahmen basierend auf dem nächsten Datum zusammengeführt werden
- 27. Zeige Tableiste auf dem nächsten Bildschirm in Android
- 28. Aktualisiere Koordinateneigenschaft von MKAnnotation auf dem übergeordneten Viewcontroller nach dem Touch-End-Event?
- 29. RXSwift - takeUntil Cancelling vor dem nächsten Ereignis
- 30. erhalten UIView der Viewcontroller (iphone)
Zugriff auf diese zentrale Stelle, wie kann ich Daten zurück zu ControllerA und ControllerB. ControllerA und ControllerB sind keine Singleton. Woher weiß ich, dass die Daten an die Instanz gesendet werden, die ich auf meinem Bildschirm ausgeführt habe? Vielen Dank. –
Ich verstehe, wie Sie auf die sharedApplication zugreifen. Das Problem ist: Wie kann man die Daten von der sharedApplication zurück zu controllerA bringen? Zum Beispiel sendet die sharedApplication nach dem Abrufen der Geräte in der Nähe die Gerätenamen zurück an controllerA. Vielen Dank. –
Momentan implementieren Sie den Delegaten in ControllerA, wenn er aufgerufen wird, aktualisieren Sie die Ansichten. Jetzt ist der Delegat in AppDelegate implementiert, Sie benötigen also eine Möglichkeit, ControllerA zu benachrichtigen, dass Daten bereit sind. Ich bevorzuge NSNotification. – dichen