it-swarm.com.ru

Кнопка добавления в нижнем колонтитуле таблицы

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

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{

    UIView *footerView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
    UIButton *addcharity=[UIButton buttonWithType:UIButtonTypeCustom];
    [addcharity setTitle:@"Add to other" forState:UIControlStateNormal];
    [addcharity addTarget:self action:@selector(addCharity:) forControlEvents:UIControlEventTouchUpInside];
    addcharity.frame=CGRectMake(0, 0, 40, 30);
    [footerView addSubview:addcharity];
    return footerView;

}

Я также установил высоту нижнего колонтитула 100 в методе делегата.

скриншоты: Изначально у меня 3 данных. Но когда я ищу конкретные данные, и результат будет отображаться в виде таблицы, в то время у меня будут одни данные, поэтому в это время местоположение нижнего колонтитула изменилось. Я хочу исправить нижний колонтитул в исходном месте .enter image description here

enter image description here

Правка:

В качестве альтернативного решения можно добавить кнопку, добавив дополнительную ячейку в конце.

14
vivek

По Документы Apple вы должны также реализовать метод heightForFooterInSection, иначе ваш viewForFooterInSection ничего бы не сделал.

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
      return 100.0f;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if(tableView == myListTableview)  //Here you can make decision 
    {
       UIView *footerView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
       UIButton *addcharity=[UIButton buttonWithType:UIButtonTypeCustom];
       [addcharity setTitle:@"Add to other" forState:UIControlStateNormal];
       [addcharity addTarget:self action:@selector(addCharity:) forControlEvents:UIControlEventTouchUpInside];
       [addcharity setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];  //Set the color this is may be different for iOS 7
       addcharity.frame=CGRectMake(0, 0, 130, 30); //Set some large width for your title 
       [footerView addSubview:addcharity];
       return footerView;
    }
}

- (void)addCharity:(id)sender
{
      NSLog(@"add to charity");
}
24
Shankar BS

Тот же код в Swift

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 100.0
    }
    func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {

        let footerView = UIView(frame:CGRectMake(0,0,320,40))

        let loginButton = UIButton(type: .Custom)
        loginButton.setTitle("LOGIN", forState: .Normal)
        loginButton.addTarget(self, action: "loginAction", forControlEvents: .TouchUpInside)
        loginButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        loginButton.backgroundColor = UIColor.blueColor()
        loginButton.frame = CGRectMake(0, 0, 130, 30)

        footerView.addSubview(loginButton)

        return footerView
    }

    func loginAction()
    {
        print("Hello");
    }
2
Avijit Nagare

Быть уверенным в трех вещах

1- Вы не реализуете этот метод

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

2- Этот метод

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{

Является ли метод UITableViewDelegate, а не UITableViewDataSource. Проверьте, установлен ли делегат табличного представления с контроллером

3- Убедитесь, что вы реализуете этот метод

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

Наконец , Если все правильно и все еще не работает, вы можете просто добавить представление в свойстве «tableFooterView» таблицы, чтобы она была нижним колонтитулом всей таблицы, а не только ее раздела.

1
Hani Ibrahim