2017-02-07 2 views
0

Ich bin dabei, eine App mit mehreren View-Controllern zu machen. In einfachen, Viewcontroller 1 (1) - Startbildschirm (2) - Bildschirm verbinden (3) Bluetooth - die von anderenErstellen eines Singleton für Bluetooth in Swift 3

Nach Beratung bluetooth steuerte ich erstellt habe eine neue Klasse, die als Singleton handeln und ich kann alle Bluetooth-Aktivitäten von dort aus steuern. (4) ist kein View-Controller, sondern nur eine Singleton-Klasse, die zur Steuerung des Bluetooth verwendet wird und auch die Funktionalität zum Senden von Daten ermöglicht.

Ich versuche, den Singleton zu machen und die grundlegenden Sachen für Bluetooth zu tun, aber ich kämpfe.

Ich schaue auf das Bluetooth serielle Beispiel zu folgen, aber ich verstehe nicht, was dort passiert.

Im Moment mein No.4 Code sieht wie folgt aus:

import UIKit 
import CoreBluetooth 

class BLEControl : CBCentralManagerDelegate, CBPeripheralDelegate 
{ 
    static let BLESingleton = BLEControl() 
    private init(){} 

//MARK: variables 
    var manager: CBCentralManager? 
    var pendingPeripheral: CBPeripheral? 
    var connectedPeripheral: CBPeripheral? 


//MARK: End 
} 

die Grund Bit zu tun, die, wenn die Bluetooth-Zentral zu überprüfen ist, eingeschaltet wird, wie würde ich das tun. Und wie würde ich verknüpfen es zwischen Bildschirm (2) und (4)

vielen Dank

Antwort

0

Singleton kann aus jeder Klasse zugegriffen werden. Unter der Annahme, dass BLESingleton eine Variable ist, können Sie über Singletons verwenden als

Beispiel: BLEControl.BLESingleton.manager etc aus jeder Klasse. Die Klasse BLEControl wird eine einzelne Instanz durch die Anwendung haben.

+0

Hey Idocode, ich kann nicht ganz scheinen, es herauszufinden, wie ich es rufe. Also, wenn ich den Singleton von (4) auf dem Bildschirm (2) verwenden möchte, müsste ich den BLEControl in der Klasse für (2) aufrufen? –

+0

hat es sortiert, den control.singleton.manager zu verwenden. Um jedoch auf dem gleichen Punkt zu bleiben, wenn ich den Zustand des Bildschirms (1) überprüfen wollte, mache ich den Func (CentralManagerDidUpdateState) in (4) oder (1). Mein Verständnis ist, dass du es in (4) tun würdest und es irgendwie in (1) anrufst, aber ich weiß nicht, wie ich es (1) nennen soll. Ich habe diese Option nicht, wenn ich control.singleton.manager –

+0

'centralManagerDidUpdateState' zu ​​sein scheint, eine Delegate-Methode zu sein. Legen Sie die Singleton-Klasse selbst als Delegat fest. Dann geben Sie innerhalb der centralManagerDidUpdateState-Methode eine Benachrichtigung aus, wenn der Status aktualisiert wird. All dies wird in (4) gemacht. Jetzt kann sich jeder andere Klassen-/View-Controller (2) selbst als Beobachter der von der Singleton-Klasse ausgegebenen Benachrichtigung hinzufügen. Vergessen Sie nicht, den Beobachter zu entfernen – idocode

Verwandte Themen