我尝试按特定顺序填充UITableView
数组。
到目前为止,我可以通过这些方式更改订单
字母
字符数
我可以运行循环来反转数组中的字符串,然后显示它们。
我可以向后翻转所有这些,颠倒等等。
但我似乎无法用字符宽度对它们进行排序。 并非所有字体都是等宽字体,我想尝试按每个单元格中的文本占用多少空间来对它们进行排序。
有没有办法可以做到这一点?
它在阵列中吗?还是tableCell?还是表本身?
我将所有数据存储在NSMutableArray
中。
答案 0 :(得分:2)
您可以按照任何方式订购UITableView的单元格,但是在创建表格的数据源之前必须先显示它们。如果使用NSFetchResultsController,则可以将距离作为排序描述符。如果您使用的是简单的NS(Mutable)数组,请在将其作为表的源之前对其进行排序。
NSSortDescriptor *titleSorter= [[NSSortDescriptor alloc] initWithKey:@"Your_Key" ascending:YES];
对于NSArray:
[arrayOfObjects sortUsingDescriptors:[NSArray arrayWithObject:titleSorter];
答案 1 :(得分:1)
要计算文字的宽度,请使用以下内容:
CGSize sizeToFit = [rowText sizeWithFont:[UIFont systemFontOfSize:12.0f]
constrainedToSize:CGSizeMake(220.0f, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
。 。 。其中220.0f是表格单元格的宽度。
如另一个答案所述,您可以向模型添加size属性(或关联引用)。然后使用此属性进行排序:
NSSortDescriptor *titleSorter= [[NSSortDescriptor alloc] initWithKey:@"yourWidthProperty"
ascending:YES];
[arrayOfObjects sortUsingDescriptors:[NSArray arrayWithObject:titleSorter];
答案 2 :(得分:1)
如果您想进行动画排序,请查看GitHub上的TLIndexPathTools库。它可以使用普通数组或NSFetchRequest
进行动画排序和过滤。
运行“排序”示例项目。我按照您按字母顺序或长度排序的具体问题添加了它。
编辑:以下是排序示例的表格视图控制器源代码的direct link。