我正在尝试使用当前CollectionViewcell的IndexPath来访问字典中的数据。字典的键的类型为Int。 此CollectionView具有“整页”单元格,这意味着每个单元格都占据了整个视图区域,在这里我正在使用水平滚动(启用分页)在单元格之间导航。
字典是:
var dataFromServer: [Int: [VillageFestival]]?
每个CollectionViewCell内部都有一个TableView,我计划在其中具有可变的行数,具体取决于[VillageFestival]中有多少项
但是,在CollectionView cellForItemAt indexPath
中,该方法的行为引起了一些麻烦,因为打印indexPath.item或将其设置为我的navigationController的标题,由于我认为dequeueReusableCell的工作方式,它们返回的结果奇怪但“可理解”。
示例:当前索引为0。当我向右滚动时,当前索引现在为2。如果导航到第6页然后又返回上一页,则当前索引指示为3。
为了简化逻辑,我已将字典键从日期更改为字符串,现在又更改为整数了。但是问题仍然存在。
我使用的是全局pageIndex: Int
,该全局CollectionView cellForItemAt
内
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
pageIndex = indexPath.item
self.navigationController?.navigationBar.topItem?.title = String(pageIndex)
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell", for: indexPath) as! CollectionViewCell
// CollectionViewCell resize to CollectionView Bounds
cell.tableViewCellOffsets = (UIApplication.shared.statusBarFrame.size.height + (self.navigationController?.navigationBar.frame.height ?? 0.0) , self.tabBarController?.tabBar.frame.height ?? 0)
return cell
}
在Tableview numberOfRowsInSection中,我使用pageIndex访问字典值。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let festivals = dataFromServer?[pageIndex] else {return 0}
return festivals.count
}
使用我当前的代码,该应用程序在某些页面上显示0行,而在其他页面上显示1行。我的猜测是,collectionView的cellForItemAt在tableView的方法之前(也可能在之后?)调用,这使得使用全局pageIndex不可靠...
谢谢!
答案 0 :(得分:0)
尝试这个游乐场,它可能会对您有所帮助:
df['binned'] = pd.qcut(df['value'], 20)
df = df.groupby('binned')['value'].count()
print(df.head())
binned
(0.031127000000000002, 0.03114] 3
(0.03114, 0.031142] 3
(0.031142, 0.031145] 2
(0.031145, 0.031148] 2
(0.031148, 0.031154] 4