从另一个视图重新加载集合视图数据 class
Reload collection view data from another view class
我在一个视图中有两个容器。最上面的有一个集合视图。
当从下面的容器中点击一个按钮时,我想从一个按钮更新我的集合视图。我的按钮也在更改我的集合视图使用的数组的值。
我以为 didSet 可以完成这项工作,但不幸的是没有奏效。
顶部:
class TopViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var favoritesCV: UICollectionView!
var myFavorites = [] {
didSet {
self.favoritesCV.reloadData()
}
}
override func viewDidAppear(animated: Bool) {
myFavorites = favoritesInstance.favoritesArray
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return myFavorites.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell : FavoritesCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! FavoritesCollectionViewCell
var myPath = myFavorites[indexPath.row] as! String
cell.myImage.image = UIImage(named: myPath)
return cell
}
}
底部:
class BottomViewController: UIViewController, UIScrollViewDelegate {
@IBAction func addFavorites(sender: AnyObject) {
favoritesInstance.favoritesArray.append("aaaa.jpg")
}
}
存储空间Class:
class Favorites {
var favoritesArray:Array <AnyObject>
init(favoritesArray:Array <AnyObject>) {
self.favoritesArray = favoritesArray
}
}
var favoritesInstance = Favorites(favoritesArray:[])
我已经添加了
NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadList:", name:"load", object: nil)
在我的视图中加载了我的 collection 视图 class。
还添加了一个选择器,它在通知中心调用时重新加载我的数据
func loadList(notification: NSNotification){
self.favoritesCV.reloadData()
}
以及按下按钮的另一个 class:
NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil)
Swift 3:
NotificationCenter.default.addObserver(self, selector: #selector(loadList), name:NSNotification.Name(rawValue: "load"), object: nil)
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
太棒了!我在找这个。在 Swift 3 中,代码略有不同。在集合视图控制器中:
NotificationCenter.default.addObserver(self, selector: #selector(RoundCollectionViewController.load), name:NSNotification.Name(rawValue: "reload"), object: nil)
另一个:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
Swift 4:
第 1 class:
NotificationCenter.default.post(name: NSNotification.Name("load"), object: nil)
Class 与 collectionView:
在 viewDidLoad() 中:
NotificationCenter.default.addObserver(self, selector: #selector(loadList(notification:)), name: NSNotification.Name(rawValue: "load"), object: nil)
和功能:
@objc func loadList(notification: NSNotification) {
self.collectionView.reloadData()
}
我在一个视图中有两个容器。最上面的有一个集合视图。 当从下面的容器中点击一个按钮时,我想从一个按钮更新我的集合视图。我的按钮也在更改我的集合视图使用的数组的值。
我以为 didSet 可以完成这项工作,但不幸的是没有奏效。
顶部:
class TopViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var favoritesCV: UICollectionView!
var myFavorites = [] {
didSet {
self.favoritesCV.reloadData()
}
}
override func viewDidAppear(animated: Bool) {
myFavorites = favoritesInstance.favoritesArray
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return myFavorites.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell : FavoritesCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! FavoritesCollectionViewCell
var myPath = myFavorites[indexPath.row] as! String
cell.myImage.image = UIImage(named: myPath)
return cell
}
}
底部:
class BottomViewController: UIViewController, UIScrollViewDelegate {
@IBAction func addFavorites(sender: AnyObject) {
favoritesInstance.favoritesArray.append("aaaa.jpg")
}
}
存储空间Class:
class Favorites {
var favoritesArray:Array <AnyObject>
init(favoritesArray:Array <AnyObject>) {
self.favoritesArray = favoritesArray
}
}
var favoritesInstance = Favorites(favoritesArray:[])
我已经添加了
NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadList:", name:"load", object: nil)
在我的视图中加载了我的 collection 视图 class。 还添加了一个选择器,它在通知中心调用时重新加载我的数据
func loadList(notification: NSNotification){
self.favoritesCV.reloadData()
}
以及按下按钮的另一个 class:
NSNotificationCenter.defaultCenter().postNotificationName("load", object: nil)
Swift 3:
NotificationCenter.default.addObserver(self, selector: #selector(loadList), name:NSNotification.Name(rawValue: "load"), object: nil)
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
太棒了!我在找这个。在 Swift 3 中,代码略有不同。在集合视图控制器中:
NotificationCenter.default.addObserver(self, selector: #selector(RoundCollectionViewController.load), name:NSNotification.Name(rawValue: "reload"), object: nil)
另一个:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "load"), object: nil)
Swift 4:
第 1 class:
NotificationCenter.default.post(name: NSNotification.Name("load"), object: nil)
Class 与 collectionView:
在 viewDidLoad() 中:
NotificationCenter.default.addObserver(self, selector: #selector(loadList(notification:)), name: NSNotification.Name(rawValue: "load"), object: nil)
和功能:
@objc func loadList(notification: NSNotification) {
self.collectionView.reloadData()
}