UITableView с разделами и проанализированными данными как создать cellForRowAtIndexPath - PullRequest
0 голосов
/ 30 сентября 2010

У меня проблемы с настройкой cellForRowAtIndexPath с помощью Sections. Если бы я просто показывал все «дорожки» без разделения разделов по «темам», то он работал бы нормально.

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 голосов
/ 03 октября 2010

Я бы использовал вложенные массивы.

Создание массива данных:

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

Должно быть понятно, как получить к ним доступ.

...