ios 关于tableview方法执行顺序为啥会先走判断行高
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 关于tableview方法执行顺序为啥会先走判断行高相关的知识,希望对你有一定的参考价值。
参考技术A 1NSDictionary *attrs = @NSFontAttributeName : font;
整个流程的基本思想大概就是:用一个字符串对象来调用此方法,中间需要传入一个属性字典来告知字体和样式,然后根据字符串长度的多少来算出应该给多大的frame。前面传进的size一般可以设置最大宽度。 此方法一般写成分类便于调用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#import "NSString+Size.h"
@implementation NSString (Size)
/**
* 类方法计算size大小
*/
+ (CGSize)sizeWithString:(NSString *)str andFount:(UIFont *)font andMaxSize:(CGSize)size
NSDictionary *attrs = @NSFontAttri
为啥当我向下滚动iOS(tableView内的collectionview)时取消选择单元格?
【中文标题】为啥当我向下滚动iOS(tableView内的collectionview)时取消选择单元格?【英文标题】:Why cell is deselect when I scroll down iOS (collectionview inside tableView)?为什么当我向下滚动iOS(tableView内的collectionview)时取消选择单元格? 【发布时间】:2020-09-30 08:21:21 【问题描述】:我在 tableviewcell 中有一个带有 multiselect 的 collectionview。当我向下滚动时 - 选定的单元格被取消选择。 CollectionViewDelegate 和 DataSource 包含在单元格中。 TableView 只包含这个单元格。我认为,当 TableView 尝试重用单元格时会出现问题。
class CategoryCollectionCell: UITableViewCell
@IBOutlet weak var collectionView: UICollectionView!
static let identefier = "CategoryCollectionCell"
private var items: [Value] = []
didSet
collectionView.reloadData()
override func awakeFromNib()
super.awakeFromNib()
commonInit()
private func commonInit()
collectionView.delegate = self
collectionView.dataSource = self
collectionView.allowsMultipleSelection = true
func config(items: [Value])
self.items = items
extension CategoryCollectionCell: UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
items.count
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CategoryCell.identefier, for: indexPath) as! CategoryCell
cell.config(text: items[indexPath.row].name)
cell.layoutIfNeeded()
return cell
【问题讨论】:
【参考方案1】:在您的func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
中,您必须将单元格设置为已选中(如果之前已选中)。
iOS 在重用之前重置每个单元格。如果显示之前的每个单元格都应该被选中,你必须检查你的数据。
您可以在自定义 UICollectionViewCell 类中设置自定义方法,也可以使用内置函数将单元格设置为选中
cell.isSelected = true
【讨论】:
以上是关于ios 关于tableview方法执行顺序为啥会先走判断行高的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Xcode 不执行 func tableView 中的代码?