[英]swift pass images from collection view controller to another view controller
[英]Update Collection View from View Controller Swift
我的storyboard
有這個。
ViewController-> Tableview->自定義單元格
自定義單元格在集合視圖中。
在我的ViewController
我有一些過濾器按鈕,我想過濾收集視圖的數組數據並重新加載它。
所以我試圖用下面的代碼制作一個委托方法
protocol ReloadTheDataDelegate: class {
func reloadTheCV()
}
class NearMeViewController: UIViewController {
weak var delegate: ReloadTheDataDelegate?
@IBAction func anAction(_sender : AnyObject){
requests.weekendEventData.sort() { $0.realDate < $1.realDate }
delegate?.reloadTheCV()
}
}
class WeekendTableViewCell: UITableViewCell, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UICollectionViewDelegate, ReloadTheDataDelegate {
@IBOutlet public weak var weekendCV: UICollectionView!
func reloadTheCV() {
print("done") //never printed
weekendCV.reloadData()
}
override func awakeFromNib() {
super.awakeFromNib()
if let myViewController = parentViewController as? NearMeViewController {
myViewController.delegate = self
}
weekendCV.register(UINib(nibName: "WeekendCollectionViewCell", bundle: nil),
forCellWithReuseIdentifier: "phoneweekendcell")
weekendCV.delegate = self
weekendCV.dataSource = self
}
}
還有我帶ViewController的擴展
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
誰能解釋為什么從未調用過函數reloadTheCV()
嗎?
NearMeViewController
委托( ReloadTheDataDelegate
)為nil
。 由於其不打印。 您沒有設置delegate
,這種方法也太復雜了。
因此,而不是采用protocol
概念。 只需使用以下方式即可重新加載單元格的收集視圖。
在您的NearMeViewController
上添加以下函數。 並在需要重新加載集合視圖時致電。
func reloadCellCV() {
for cell in tableView.visibleCells {
if let cell = cell as? WeekendTableViewCell {
DispatchQueue.main.async {
cell.weekendCV.reloadData()
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.