所以我在这里遇到一些问题,我想我在这篇文章的标题中明确指出了这一点。我想根据我在代码中声明它们的顺序对UITableView
标题进行排序。我已经尝试上网但我找不到任何解决方案。
我认为从这里可以提供帮助。提前谢谢!
编辑:这是表视图内容的代码
NSDictionary *temp = [[NSDictionary alloc]initWithObjectsAndKeys:accSettingsOpts, @"Account",notifSettingsOpts,@"Notifications",aboutOpts,@"About",logoutOpt,@"Sign Out",nil];
我想显示按
排序的表格视图-Account
-Notifications
-About
-Sign Out
但它显示为
-About
-Account
-Notifications
-Sign Out
编辑:这就是解决问题的方法。
根据我在下面接受的答案,我将其修改为
@interface myClass ()
NSArray *headerArr;
@end
在viewDidload
我添加了
headerArr = [[NSArray alloc]initWithObjects:@"Account",@"Notifications",@"About",@"Sign Out", nil];
最后......
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [headerArr objectAtIndex:section];
}
感谢帮助人员。我没想到它只是那么简单。
答案 0 :(得分:2)
字典是无序集合。如果将项目存储在字典中,则定义它们的顺序不会保存在任何位置。
表视图是一个固有有序的对象列表。因此,字典不适合作为存储表视图的项目的方式。但是,数组为表视图提供了自然数据源。
使用数组而不是字典。就这么简单。您可以使用字典数组或一些其他数据对象的数组,然后编写cellForRowAtIndexPath方法以从模型中提取数据(数组元素)并在单元格中安装值。
答案 1 :(得分:2)
订单与声明顺序不同的原因是NSDictionary
是无序的:它是根据字符串的哈希码排序的,这是相当随意的。
要强制执行特定订单,请使用具有固定订单的容器,例如NSArray
。例如,您可以将accSettingsOpts
,notifSettingsOpts
等存储在一个数组中,将header
属性添加到Opts
类,并将该属性拉到在UITableView
。