在tableview页脚中添加按钮

时间:2013-12-03 09:52:44

标签: ios iphone uitableview ios7

我在一个viewcontroller中有tableview。我有一节。我想在页脚中添加按钮。我已经编写了这段代码,但没有显示页脚视图。

- (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个数据。但是当我搜索特定数据并且结果将在tableview中显示时,我有一个数据,所以那时页脚位置发生了变化。我想在最初的地方修剪页脚。 enter image description here

enter image description here

修改

作为替代解决方案,可以通过在末尾添加额外的单元格来添加按钮。

3 个答案:

答案 0 :(得分:24)

Apple's Docs必须也实施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");
}

答案 1 :(得分:2)

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 :(得分:1)

确保三件事

1-您没有实施此方法

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

2-此方法

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

是UITableViewDelegate方法而不是UITableViewDataSource,检查是否使用控制器设置了tableview的委托

3-确保您正在实施此方法

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

最后,如果一切正常但仍然无效,那么您只需将表格的“tableFooterView”属性中的视图添加为整个表格的页脚,而不仅仅是该部分