在swift中与代表一起工作
我想弄清楚如何与代表和协议一起工作 我有一个MessageFetcher类,它从url获取消息在swift中与代表一起工作,swift,delegates,Swift,Delegates,我想弄清楚如何与代表和协议一起工作 我有一个MessageFetcher类,它从url获取消息 class MessageFetcher { func getCurrentMessagesFromString(urlStringL: String) {..} } 我创建了一个协议 protocol MessageFetcherDelegate { func currentMessagesDidUpdate() } 我有一个视图控制器,它显示消息并符合MessageFetcherDeleg
class MessageFetcher {
func getCurrentMessagesFromString(urlStringL: String) {..}
}
我创建了一个协议
protocol MessageFetcherDelegate {
func currentMessagesDidUpdate()
}
我有一个视图控制器,它显示消息并符合MessageFetcherDelegate协议:
class MessagesViewController: UIViewController, MessageFetcherDelegate {
var messageFetcher = MessageFetcher()
var delegate: MessageFetcherDelegate?
override func viewDidLoad() {
delegate = self
}
func currentMessagesDidUpdate() {
collectionView.reloadData()
}
}
我希望在获取程序更新消息数组并重新加载集合视图数据时通知视图控制器
我哪里做错了?我需要补充什么?如何通知控制器消息已更新?在类
MessageFetcher
中,需要添加不在MessagesViewController中的委托属性:
class MessageFetcher {
func getCurrentMessagesFromString(urlStringL: String) {..}
var delegate: MessageFetcherDelegate?
}
而您的MessagesViewController
应该如下所示,请参阅注释以获取解释:
class MessagesViewController: UIViewController, MessageFetcherDelegate {
var messageFetcher = MessageFetcher()
override func viewDidLoad() {
// Declare MessagesViewController class as a deleagte od message Fetcher
messageFetcher.delegate = self
}
func currentMessagesDidUpdate() {
collectionView.reloadData()
}
}
现在剩下要做的是在MessageFetcher
中调用delegate方法,在fetcher更新消息时添加以下代码:
delegate?.currentMessagesDidUpdate()