我需要在用户的头像周围显示边框,但仅限于桌子中心的用户单元格。此外,边界宽度与其距中心的距离成正比。
因此,我在UIScrollView
委托方法scrollViewDidScroll
API中使用了我的单元格更新逻辑,然后使用UITableView
contentOffset.y
获取中间单元格。一旦我知道了表的中心点,我就要求表格在那个时刻给我单元格,然后更新它的值。
但是,对tableView.cellForRow(at:)
随机的调用会引发异常并崩溃。我确实守护nil
值,但不知道如何处理因异常而导致的崩溃。
另外,当引发异常时,注意centerLevelCellIndexPath
值对我来说很好 - 第0行第3行(我的UITableView总是有1个部分,大约5-6行)
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView is UITableView {
let tableViewCenterContentOffset = CGPoint(x: tableView.center.x, y: tableView.contentOffset.y + tableView.bounds.height/2)
guard let centerLevelCellIndexPath = tableView.indexPathForRow(at: tableViewCenterContentOffset) else {
return
}
guard let cell = tableView.cellForRow(at: centerLevelCellIndexPath), // <--- Crashes here
let centerLevelCell = cell as? MyCustomCell,
let collectionView = centerLevelCell.collectionView else {
return
}
以下是异常调用堆栈的屏幕截图 -