2015-09-06 74 views
-1

我只爲我創建應用程序。 Nad使用MVC創建它。關於ViewController.swift中藍牙的輸出狀態消息

,我有這個代碼和平在我的模型「BTData.swift」:

func centralManagerDidUpdateState(central: CBCentralManager!) { 
    switch (central.state) 
    { 
    case .Unsupported: 
     println("BLE не поддерживается") 
     break 
    case .Unauthorized: 
     println("Приложение не авторизовано для использования BLE") 
     break 
    case .Unknown: 
     println("Состояние Central Manager не известно") 
     break 
    case .Resetting: 
     println("Соединение с системным сервисом потеряно") 
     break 
    case .PoweredOff: 
     println("BLE выключено") 
     break 
    case .PoweredOn: 
     startScanning() 
    default: 
     break 
    } 
} 

func startScanning() { 
    println("Scanning...") 
    if let central = centralManager { 
     central.scanForPeripheralsWithServices(nil, options: nil) 
    } 
} 

所有工作良好的調試。我在那裏看到了這條消息。 但我不明白如何在標籤中輸出狀態狀態消息。

+0

從你的問題,你的問題是不明確;但是從您對刪除的答案的評論中可以更清楚地看出。您應該在您的問題中添加該評論以更清楚地解釋您的問題。您需要查看協議/委託(如果每次只有一個對象需要獲取信息)或使用NSNotifications(如果要通知任意數字) – Paulw11

+0

謝謝您的回答!我正在更新我的問題。 –

回答

0

我與NSNotification有關。對於模型 下面的代碼:

func sendBTServiceNotification(BTStatus: String) { 
    var connectionDetails = ["Статус": BTStatus] 
    NSNotificationCenter.defaultCenter().postNotificationName(BLEServiceStatusNotification, object: self, userInfo: connectionDetails) 
} 

// Получаем состояние при обновлении Central Manager (обязательная) 
func centralManagerDidUpdateState(central: CBCentralManager!) { 
    switch (central.state) 
    { 
    case .Unsupported: 
     sendBTServiceNotification("BLE не поддерживается") 
     break 
    case .Unauthorized: 
     sendBTServiceNotification("Приложение не авторизовано для использования BLE") 
     break 
    case .Unknown: 
     sendBTServiceNotification("Состояние Central Manager не известно") 
     break 
    case .Resetting: 
     sendBTServiceNotification("Соединение с системным сервисом потеряно") 
     break 
    case .PoweredOff: 
     sendBTServiceNotification("BLE выключено") 
     break 
    case .PoweredOn: 
     startScanning() 
    default: 
     break 
    } 
} 

func startScanning() { 
    sendBTServiceNotification("Сканирование...") 
    if let central = centralManager { 
     central.scanForPeripheralsWithServices(nil, options: nil) 
    } 
} 

而這種代碼視圖控制器:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    btData = BTData() 

    // Читаем статус BLE 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("statusChanged:"), name: btData.BLEServiceStatusNotification, object: nil) 

} 

deinit { 
    NSNotificationCenter.defaultCenter().removeObserver(self, name: btData.BLEServiceStatusNotification, object: nil) 
} 

// Обновляем статус BLE 
func statusChanged(notification: NSNotification) { 
    let userInfo = notification.userInfo as! [String: String] 
    let statusMsg: String! = userInfo["Статус"] 
    Status.text = "Статус: \(statusMsg)" 
}