Заполнение ячеек UITableView из NSMutableArray в NSMutableDictionary - PullRequest
0 голосов
/ 14 февраля 2011

У меня есть NSMutableDictionary, который содержит NSMutableArrays.Словарь представляет отделы, а массивы представляют отделы в этом подразделении.Я пытаюсь заполнить ячейки UITableView из содержимого NSMutableArray.В настоящее время у меня есть UITableView, отображающий правильное количество секций (делений) и правильное количество ячеек в каждом делении [КафедраКоличество];

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    // Return the number of sections.

    return [divisionArray count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    // Return the number of rows in the section.
    NSArray *temp = [divisionDict objectForKey:[divisionArray objectAtIndex:section]];
    return [temp count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    NSString *temp = [divisionArray objectAtIndex:section];
    if ([temp isEqualToString:@"School of Humanities and Social Sciences"]) 
    {
        temp = @"Humanities and Social Sciences";

    } else  if ([temp isEqualToString:@"School of Science and Mathematics"]) {
        temp = @"Science and Mathematics";
    } else  if ([temp isEqualToString:@"School of Education"]) {
        temp = @"Education";
    }
        return temp;
}

Я пробовал много разных вещей в cellForRowAtIndexPath для отображения именотделы для каждого отдела, но я не могу заставить его работать.Я понимаю, что должен получить массив для каждого ключа, затем пройти через этот массив и получить имена каждого отдела, но реализация этого в cellForRowAtIndexPath сбивает меня с толку.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 15 февраля 2011

Сохраняя мою структуру такой же, я смог понять это, вот строки, которые я помещаю в метод cellForRowAtIndexPath:

NSArray *temp = [divisionDict objectForKey:[divisionArray objectAtIndex:[indexPath section]]];    
[[cell textLabel] setText:[temp objectAtIndex:[indexPath row]]];
0 голосов
/ 14 февраля 2011

Я думаю, что вам лучше изменить структуру, чтобы иметь NSMutableArray, который содержит NSMutableDictionarys, который содержит NSMutableArrays для строк и NSStrings для заголовков.Это мне показалось очень удобным в некоторых кодах, которые я разрабатывал.

Вот как это работает:

У вас есть NSMutableArray, в котором есть запись для каждого подразделения, чтозаканчивается разделом в табличном представлении.В каждой записи массива у вас есть NSMutableDictionary, который содержит две записи: одну, для которой я использовал ключ @"rows", которая содержит массив со строками, и одну, для которой я использовал ключ @"title", чтосодержит заголовок раздела.

Ваш код становится:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    // Return the number of sections.
    return [divisionArray count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
    // Return the number of rows in the section.
    NSArray *rowsInSection = [[divisionArray getObjectAtIndex: section] objectForKey: @"rows"];
    return [rowsInSection count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{
    NSString *rawTitle = [[divisionArray getObjectAtIndex: section] objectForKey: @"title"];
    NSString *sectionTitle = [rawTitle stringByReplacingOccurrencesOfString: @"School of " withString: @""];
    return sectionTitle;
}
...