2010-09-30 36 views
0

我有麻烦设置我的cellForRowAtIndexPath与部分。如果我只是显示所有“曲目”,而不用“主题”分割部分,那么它可以正常工作。UITableView与部分和解析数据如何创建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 
+0

轨道数据在哪里?它是在设备上的SQLite数据库中,它驻留在内存中,还是根据需要从网络中获取? – 2010-09-30 17:12:13

+0

@John解析XML。谢谢! – slowman21 2010-09-30 20:08:58

回答

0

我会使用嵌套数组。在的cellForRowAtIndexPath

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]; 

访问对象:

创建于DataArray

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

你能以某种方式创建章节标题是这样的:

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

应该明确如何去访问它们。

+0

感谢您的回复。嗯...当然,我也想过这个。但是,你将如何做到这一点循环。由于我的数据不是静态的,并且可以在XML被更改或更新时更改。 – slowman21 2010-10-04 18:08:00

+0

您只需使用NSMutableArray而不是那些NSArrays,循环访问您的数据并将其添加到正确的位置。你可以使用'[[dataArray objectAtIndex:section] addObject:track]'或类似的东西来添加曲目到你的部分。如果您必须将数据添加到不在dataArray中的部分,则只需添加相应的Section-Array [dataArray addObject:[NSMutableArray array]]; – 2010-10-05 02:24:59