【发布时间】:2017-09-30 06:40:27
【问题描述】:
从服务器下载完数据模型后,我尝试更新我的 navigationItem titleView。
类似这样的:
private func loadNews() {
self.newsModelManager.sendRequest(inBackground: false, preSendHandler: { (isReachable) in
if isReachable {
} else {
appDelegate.showInternetFailedAlertView()
}
}, successHandler: { (response) in
print("loadNewsModel: successHandler")
}, errorHandler: { (response) in
print("loadNewsModel: errorHandler")
}, reloginFailHandler: { (response) in
appDelegate.showReloginFailedAlertView()
}) { (isReachable) in
let array = self.newsModelManager.loadFirstFiveNews()!
DispatchQueue.main.async {
self.setupTitle_ViewWith(array: array)
}
}
}
在 seupTitle_ViewWith(array:) 中
func setupTitle_ViewWith(array: [NewsModel]?) {
guard array != nil else { return }
let frame = CGRect(x: 0, y: 0, width: 200, height: 40)
let newsTitle_View = NewsTitleView(newsModelArray: array!, frame: frame)
newsTitle_View.newsTitleViewDelegate = self
self.title_View = newsTitle_View
}
这一切都很好,直到最后一行self.title_View = newsTitle_View
我认为这会将我的 titleView 更新为我的 CustomView, 但它不是...... 那里可能出了什么问题?
我首先使用领域从服务器保存模型并在let array = self.newsModelManager.loadFirstFiveNews()! 阅读
但是,假设我已经在设备中有数据并直接读取而不先加载,它完全可以正常工作......
【问题讨论】:
-
你可以尝试在没有 DispatchQueue.main.async {} 块的情况下执行 setupTitle_ViewWith(array: array)
-
您好,刚刚试过。没有运气
-
一个疑问,你为什么在 isReachable 闭包而不是 successHandler 上调用 setupTitle_ViewWith() 函数?我希望你应该在成功下载后更新一次视图,对吗?有什么具体原因吗?
-
我在 successHandler 上将 dataModel 保存到 Realm 中,然后在 isReachable 闭包上从领域中读取数据...
-
哦,谢谢,所以调用函数似乎没有问题,好的,那么最后一次尝试你可以尝试使用“DispatchQueue.main.sync”而不是异步。
标签: ios swift xcode user-interface uinavigationitem