Имам проект, който използва 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;
}