2016-08-22 5 views
0

Я использую CoreData и хочу перезагрузить UICollectionView при сохранении новой записи в CoreData, но только self.collectionview.reloaddata() не запускает ее перезагрузкой.ReloadData в UICollectionView

Спасибо за вашу помощь.

Мои CoreData и UICollectionView меня попробовать перезагрузить UICollectionView когда clockblogalarm стать новая запись:

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. Когда я нажимаю кнопку «Готово» view.bottomButtonHandler{}, я хочу перезагрузить данные и показать их в UICollectionView с помощью loadClockAlarms().

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 
} 
+0

Можете ли вы показать, что вы имеете в ваших 'методов UICollectionViewDataSource'? – Deyton

+0

Да, конечно, я добавил. – Marshall

ответ

0

Обеспечение reloadData() называется в основном потоке, как это UI-ответственное действие:

dispatch_async(dispatch_get_main_queue()) { 
    self.ClockCollectionView.reloadData() 
} 
+0

Спасибо, что он работает. – Marshall