2017-02-07 4 views
0

Я занимаюсь созданием приложения с использованием нескольких контроллеров представлений. В простой, ViewController 1 (1) - домашний экран (2) - экран для подключения к BlueTooth каналу (3) - управление организацией BluetoothСоздание синглета для bluetooth в swift 3

Этот совет от других я создал новый класс, который будет выступать в качестве одноэлементных и я могу контролировать всю активность Bluetooth оттуда. (4) не является контроллером вида, а только одним синглетным классом, который будет использоваться для управления bluetooth, а также позволит функциональности отправлять данные.

Я пытаюсь сделать синглтон и делать базовые вещи для bluetooth, но я борюсь.

Я смотрю пример последовательного подключения Bluetooth, но я не понимаю, что там происходит.

На данный момент мой No.4 код выглядит следующим образом:

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 
} 

сделать основной бит, который должен проверить, если Bluetooth центральный включен, как бы я это сделать. И как бы я связать его между экраном (2) и (4)

большое спасибо

ответ

0

Singleton можно получить доступ из любого класса. Предполагая, что BLESingleton является переменным, вы можете использовать выше одноточечный, как

Пример: BLEControl.BLESingleton.manager и т.д. из любого класса. Класс BLEControl будет иметь один экземпляр через приложение.

+0

Эй, idocode, я не могу понять, как это можно назвать. Итак, если бы я хотел использовать синглтон из (4) на экране (2), мне нужно было бы вызвать BLEControl в классе для (2)? –

+0

получил его, чтобы использовать control.singleton.manager. Однако, чтобы оставаться в одной точке, если бы я хотел проверить состояние питания на экране (1), я делаю func (centralManagerDidUpdateState) в (4) или (1). Я понимаю, что вы сделаете это в (4) и каким-то образом назовете его в (1), но я не знаю, как его назвать (1). У меня нет такой опции, когда я делаю control.singleton.manager –

+0

'centralManagerDidUpdateState' представляется методом делегата. Установите сам singleton-класс как делегат. Затем внутри метода centralManagerDidUpdateState выдает уведомление при каждом обновлении состояния. Все это будет сделано в (4). Теперь любой другой контроллер класса/вида (2) может добавить себя в качестве наблюдателя к уведомлению, выпущенному из класса Singleton. Просто не забудьте удалить наблюдателя – idocode

Смежные вопросы