带有Sections和Parsed Data的UITableView如何创建cellForRowAtIndexPath

时间:2010-09-30 16:05:54

标签: iphone xcode uitableview nsxmlparser

我在使用Sections设置cellForRowAtIndexPath时遇到问题。如果我只是显示所有“曲目”而不按“主题”分隔部分,那么它可以正常工作。

Track *aTrack = [appDelegate.tracks objectAtIndex:row];
cell.textLabel.text = aTrack.track_title;

我已经设置了我的numberOfSectionsInTableView,numberOfRowsInSection,titleForHeaderInSection。一切都很好。但我真的不知道如何设置cellForRowAtIndexPath。

经过研究之后,最好的方法似乎是使用NSDictionary显示我的细胞...

NSDictionary *dictionary = [sectionTopicArray objectAtIndex:indexPath.section];
NSArray *array = [dictionary objectForKey:@"Tracks"];
NSString *cellValue = [array objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

有人可以给我一些关于如何制作一个MutableArray(sectionTopicArray)的指针,它会包含我所有的词典吗?我可以在脑海中看到以下内容,但只是不知道如何在代码中说出来。

sectionTopicArray
[0] Dictionary 1 with key Tracks
    Track1
    Track2
    Track3
[1] Dictionary 2 with key Tracks
    Track4
[2] Dictionary 3 with key Tracks
    Track5
    Track6

basically I'm thinking...
Section0 = Dictionary1 = Topic1 
Section1 = Dictionary2 = Topic2 
Section2 = Dictionary3 = Topic3

1 个答案:

答案 0 :(得分:0)

我会使用嵌套的数组。

创建DataArray:

    NSArray *dataArray = [NSArray arrayWithObjects:
                      [NSArray arrayWithObjects:    // Section 0
                       track1,                      //  Item 0
                       track2,                      //  Item 1
                       track3,                      //  Item 2  (indexpath 0.2)
                       nil],
                      [NSArray arrayWithObjects:    // Section 1
                       track4,                      //  Item 0  (indexpath 1.0)
                       nil],
                      [NSArray arrayWithObjects:    // Section 2
                       track5,                      // Item 0
                       track6,                      // Item 1   (indexpath 2.1)
                       nil],
                      nil];

在cellForRowAtIndexPath中访问对象:

Track *trackAtIndexPath = [[dataArray objectAtIndex:indexpath.section] objectAtIndex:indexpath.row];

你可以用这样的方式创建章节标题:

    NSArray *sectionTitles = [NSArray arrayWithObjects:
                          @"Section 0",
                          @"Section 1",
                          @"Section 2",
                          nil];

应该清楚如何访问它们。