/ / UITableView - Заглавие на раздел. Как да промените текста? - ios, object-c, uitableview

UITableView - заглавна част на секцията. Как да променям текста? - ios, цел-c, uitableview

Имам проект, който използва Storyboards. Имам UITableView със статични клетки и групов стил.

Трябва да променя текста на секцията в един раздел в зависимост от избора, който се прави в сегментиран контрол (в друг раздел)

Намерих някои решения, които показват, че трябва да използваш този метод:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

и задейства актуализация чрез обаждане:
[[self tableView]reloadSections:[NSIndexSet indexSetWithIndex:SectionToChange] withRowAnimation:UITableViewRowAnimationFade];

Проблемът е, когато се обадя reloadSections след това всички редове и клетки в раздела в въпрос се изтриват. Текстът се актуализира правилно, но с този нежелан страничен ефект.

Отговори:

9 за отговор № 1

Мисля, че намерих отговора тук: Промяна на заглавието на раздел UITableView без tableView: titleForHeaderInSection

Той може да не е много елегантен, но е шева да работи.

Мога да задействам актуализация само на заглавната част на секцията, като нямам нежелани странични ефекти, като викам: [self.tableView headerViewForSection:1].textLabel.text = [self tableView:self.tableView titleForHeaderInSection:1];

Така че единственото нещо, което е необходимо е да се изпълни:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 1){
if (self.segmentX.selectedSegmentIndex == 0) // or some condition
return @"Header one";
else
return @"Header two";
}
return nil;
}

0 за отговор № 2

Ако сте изпълнили тези функции, премахването им трябва да реши проблема:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

-2 за отговор № 3
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{        if (section == 0)
{
lbl.text = @"abc";
}
if (section == 2)
{
lbl.text = @"2ndsectionbeigns";
}
return headerview;

}