Можно иметь номер NumberOfSectionsInTableView динамически? - PullRequest
1 голос
/ 10 ноября 2011

Могу ли я иметь количество строк динамически?Я пытаюсь удалить заголовок раздела tableView, и я не знаю, как ... и я учил, что решением было бы изменить количество разделов.

Прямо сейчас мой numberOfSectionsInTableView выглядит так:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 2;
}

и

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    beTribesAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

    switch (section) {
        case 0:
            return [appDelegate.firstArray count];
        case 1:
            return [appDelegate.secondArray count];    
        default:
            return 0;
    }
}

установка раздела заголовка следующим образом:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{ 
    sectionTitles = [[NSMutableArray alloc] init];

        [sectionTitles addObject:@"firstSection"];
        [sectionTitles addObject:@"secondSection"];
    NSString *sectionText = [sectionTitles objectAtIndex:section];
    return sectionText;
}

Ответы [ 3 ]

6 голосов
/ 10 ноября 2011

Я не уверен, что понял вопрос, так как ответ кажется тривиальным: просто измените реализацию, чтобы получить некоторое динамическое значение, и все готово, верно?

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.nbSections;
}

Где nbSections - это свойство, которому вы будете назначать желаемое значение, чтобы вы могли изменить его в любое время. Так в чем же дело?

PS: Конечно, позвоните [tableView reloadData], чтобы пересчитать содержимое вашего tableView и, очевидно, учесть новое значение ... может быть, это то, что вы упустили?

2 голосов
/ 10 ноября 2011

Чтобы удалить заголовок раздела, вы должны установить высоту заголовка в 0, например, так:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    switch (section) {
        case 0:
            return 0;
        default:
            return 44;
    }
}

В этом примере будет удален заголовок первого раздела, а для всех остальных будет установлено значение 44.

0 голосов
/ 10 ноября 2011

Первое, что нужно сделать, это переместить массив sectionTitles в свойство вашего контроллера представления и инициализировать его в вашем методе init.

Затем, когда вы захотите изменить заголовок раздела, измените значениев массиве и вызовите [tableView reloadData]

Вы хотите удалить весь раздел из tableView или только заголовок?если вы хотите просто удалить заголовок, установите для элемента в массиве значение @ ""

. Если вы хотите полностью удалить раздел, удалите элемент из sectionTitles и измените свой метод numberOfSectionsInTableView следующим образом:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return [sectionTitles count];
}
...