Как установить нижний колонтитул в одном разделе TableView вручную (iOS)? - PullRequest
0 голосов
/ 25 июля 2011

Я хотел бы реализовать некоторый код, который изменяет текст нижнего колонтитула в одном разделе таблицы (в методе viewDidAppear или viewWillAppear). Но как я могу это сделать?

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

не соответствует моим требованиям (меняется только один раз при загрузке tableView, но мне нужно изменить текст нижнего колонтитула после изменения текста в ячейке tableView.

Ответы [ 3 ]

3 голосов
/ 25 июля 2011
    -(CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{


        return 120;

    }



    -(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
        if (section == 0) {
            return @"Things We'll Learn";
        } else {
            return @"Things Already Covered";
        }
    }



- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [tableView reloadData];
}
1 голос
/ 25 июля 2011
  1. Реализуйте viewForFooterInSection и добавьте туда textField.Также сделайте это textField свойством.

  2. Когда вы закончите редактирование tableViewCells, реализуйте метод textFieldDidEndEditing и присвойте необходимое значение textField вашего footerView.

  3. Как только ваш textField установлен, используйте [tableView reloadData], чтобы снова реализовать viewForFooterInSection, и он должен работать сейчас.

Редактировать:

Если вы хотите изменить заголовок раздела нижнего колонтитула после редактирования UITableViewCell,

  1. Установите глобальную переменную или используйте NSUserDefaults, чтобы указать, что tableViewCell было отредактировано.

  2. self.tableView reloadData сразу после редактирования.

  3. В методе titleForFooterInSection проверьте эту переменную (это будет означать, что tableView был отредактирован) и установите заголовок соответствующим образом.

0 голосов
/ 26 октября 2015
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if(section == 1)
    {
        // For Lable
        UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 40)] autorelease];
        tableView.sectionHeaderHeight = view.frame.size.height;
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, view.frame.size.width - 20, 44)];
        label.text = [self tableView:tableView titleForHeaderInSection:section];
        label.font = [UIFont boldSystemFontOfSize:16.0];
        label.shadowOffset = CGSizeMake(0, 1);
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor whiteColor];
        label.adjustsFontSizeToFitWidth = YES;
        [label setLineBreakMode:NSLineBreakByTruncatingTail];
        [label setNumberOfLines:0];
        label.text = @“Your Text Here…..your Text Here”;

        [view addSubview:label];
        [label release];
        return view;
    }

    return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{  
     if(section == 1)
    {

        return 60.0;
    }

    return 0;
}
...