簡體   English   中英

從自定義類調用視圖控制器方法

[英]Call view controller method from custom class

我有一個自定義類和一個視圖控制器。

我的自定義類:

class ChatManager:NSObject {

    func messageArrived() {
         //When Message arrives I am handling it from here
         //I need something like that: Viewcontroller.updateTable()
    }
}

當消息從互聯網到達時,我需要在視圖控制器中更新tableview。 所以我的意思是我必須從messageArrived方法調用視圖控制器方法。 我怎樣才能做到這一點 ?

這是使用委托的簡單示例:

在您的聊天管理器課程之前聲明委托

protocol ChatManagerDelegate {
    func manageMessage()
}

當消息到達時,調用委托方法進行處理。

class ChatManager: NSObject {

    var delegate: ChatManagerDelegate?

    func messageArrived() {
        self.delegate!.manageMessage()
    }
}

在視圖控制器中,請記住將聊天管理器的委托設置為self。

class ViewController: ChatManagerDelegate {
    var manager = ChatManager()
    manager.delegate = self

    func manageMessage() {
        self.updateTable()
    }
}

這可能是一種實現:

視圖控制器:

class ViewController: UIViewController,ChatManagerDelegate {

  override func viewDidLoad() {
    super.viewDidLoad()
    let myChatManager = ChatManager()
      myChatManager.delegate = self
  }


  func messageDidArrive() {
    // Do Things here.
  }
}

Chatmanager:

class ChatManager:NSObject {
  var delegate:ChatManagerDelegate?

  func messageArrived() {
    //When Message arrives I am handling it from here
    //I need something like that: Viewcontroller.updateTable()
  }
}

委托協議:

protocol ChatManagerDelegate{
  func messageDidArrive()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM