按日期排序的Xcode UITableView部分和行(来自mutableArray)

时间:2014-04-12 10:23:06

标签: ios sorting tableview rows sections

在我的UITableView中,我有多个带有日期标题的部分。 日期按NSMutableArray中的日期排序。 我的部分显示正确的日期,工作正常,numberofrowsinnsection工作正常。 对于单元格文本标签,我得到了NSMutableArrays,它们按照与排序日期相同的顺序排序。 如何获取相应日期(部分)的正确文本标签? 使用indexpath.section,它仅在节中有1行时才有效。当我在一个部分中有2行或更多行时,文本标签的值不正确。 我知道这可以用字典来完成,但我找不到解决方案。

@property NSMutableArray *dateArray;     //date for my sections
@property NSMutableArray *hoursArray;   //hours for cells textlabel




我的部分

"January 2014",
"April 2014",
"June 2014"

我的工作时间:

"1",
"2",
"3",

/////////// EDIT

当我使用时 Cell.textlabel.text = [hoursarray objectatindex:indexpath.row] 它总是从每个部分的索引0开始。

当我使用时 Cell.textlabel.text = [hoursarray objectatindex:indexpath.section] 当每个部分只有1行时,它具有正确的排序。 但是当一个部分中有更多行时,顺序是错误的

1 个答案:

答案 0 :(得分:1)

您必须创建已排序的数据源,因此只需创建rowArray的sectionArray然后相应地使用它。 然后你可以像这样使用它:

Cell.textlabel.text = [[sectionArray objectatindex:indexpath.section] objectAtIndex:indexpath.row];

现在您只需要管理数据源。

<强>更新:   您可以像这样创建2D数组

NSMutableArray *dateArray = [[NSMutableArray alloc] init];


for(int i=0; i<=dateData.length; i++)
{
   NSMutableArray *hoursArray = [[NSMutableArray alloc] init];

   for(int j=0; j<=hoursData.length; j++)
   {
     [hoursArray addObject:yourObject];
   }

   [dateArray addObject:hoursArray];
}

这只是一个例子,但您可以根据需要进行优化。