【发布时间】:2017-12-13 23:05:30
【问题描述】:
我的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() 从未被调用?
【问题讨论】:
-
我在这里很困惑。为什么在表格视图单元格中有一个集合视图?而且,当您说
ViewController -> Tableview -> Custom cell时,您的意思是它们彼此重叠,对吗?没有通过 segue 连接? -
@FangmingNing 它有点像 netflix 应用程序......是的,它是另一个的顶部
-
好的。那为什么你的牢房里有一个
UICollectionView?你的过滤器按钮在哪里?我认为您需要的只是在单击过滤器按钮时过滤并重新加载表格视图,对吧? -
@FangmingNing “你为什么在表格视图单元格中有一个集合视图?” - 这实际上并不少见,一种情况是每个表格行是一个单独的内容类别,集合视图中只有一行,可滚动到两侧。集合视图位于表格行内,因此它们可以独立滚动。这种布局在 VOD 应用中很常见