UICollectionView 中的重载数据
Posted
技术标签:
【中文标题】UICollectionView 中的重载数据【英文标题】:ReloadData in UICollectionView 【发布时间】:2016-08-22 16:18:21 【问题描述】:我使用 CoreData 并希望在 CoreData 中保存新条目时重新加载 UICollectionView,但唯一的 self.collectionview.reloaddata()
don´t 运行它不会重新加载任何内容。
感谢您的帮助。
我的 CoreData 和 UICollectionView 我已经尝试在 clockblogalarm 成为新条目时重新加载 UICollectionView:
var clockblogalarm = [ClockBlogAlarm] ()
didSet //self.ClockCollectionView.reloadData()
var mgdContext = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
func loadClockAlarms ()
let LoadRequestBlogAlarm: NSFetchRequest<ClockBlogAlarm> = ClockBlogAlarm.fetchRequest()
clockblogalarm = try! mgdContext.fetch(LoadRequestBlogAlarm as! NSFetchRequest<NSFetchRequestResult>) as! [ClockBlogAlarm]
@IBOutlet var ClockCollectionView: UICollectionView!
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
self.loadClockAlarms()
这里我将条目保存在 CoreData 中。当我单击按钮 Done view.bottomButtonHandler
时,我想重新加载数据并使用 loadClockAlarms() 在 UICollectionView 中显示它。
else if index == 1
let view = AddClockView.instantiateFromNib()
let window = UIApplication.shared.delegate?.window!
view.closeButtonHandler = [weak modal] in
modal?.closeWithLeansRandom()
return
view.bottomButtonHandler = [weak modal] in
modal?.closeWithLeansRandom()
self.loadClockAlarms()
return
modal.show(modalView: view, inView: window!)
// MARK: UICollectionViewDataSource
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return clockblogalarm.count
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlarmBlogCell", for: indexPath) as! AlarmBlogCell
cell.layer.cornerRadius = 8
let clockblogalarms = clockblogalarm[indexPath.row]
if clockblogalarms.lock == "ClockblogAlarm"
cell.Title.text = clockblogalarms.title
cell.Time.text = "SSSSS"
return cell
【问题讨论】:
你能在你的UICollectionViewDataSource
方法中展示你有什么吗?
是的,我已经添加了。
【参考方案1】:
Swift 5 和 4.2:
DispatchQueue.main.async
self.collectionView.reloadData()
【讨论】:
【参考方案2】:确保在主线程中调用 reloadData()
,因为它是 UI 负责的操作:
dispatch_async(dispatch_get_main_queue())
self.ClockCollectionView.reloadData()
【讨论】:
谢谢它运行。以上是关于UICollectionView 中的重载数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从JSON加载特定数据并显示UICollectionView?
如何在 UICollectionView 中的 UICollectionViewCells 之间添加视图?