在表格页脚视图中放置一个按钮

Posted

技术标签:

【中文标题】在表格页脚视图中放置一个按钮【英文标题】:Putting a button in table footer view 【发布时间】:2011-07-14 19:27:16 【问题描述】:

我正在创建一个自定义按钮并将其放在表格的页脚视图中,但该按钮从右上角退出。

这里有什么问题!?!

这是我的代码和输出图像:

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [aButton setTitleColor:[UIColor colorWithWhite:0.0 alpha:0.56] forState:UIControlStateDisabled];
    [aButton setBackgroundImage:[[UIImage imageNamed:@"test.png"] stretchableImageWithLeftCapWidth:kButtonSliceWidth topCapHeight:0] forState:UIControlStateNormal];
    [aButton setTitle:@"Click me" forState:UIControlStateNormal];
    [aButton.titleLabel setFont:[UIFont boldSystemFontOfSize:kFontSize14]];
    [aButton setFrame:CGRectMake(10.0, 15.0, 300.0, 44.0)];
    [self.tableView setTableFooterView:aButton];

【问题讨论】:

帧不应该是:(0.0, 0.0, 300.0, 44.0)? @Vince:这会导致在左上角绘制按钮,我敢肯定 Abhinav 不想要。 你为什么不试试像CGRectMake(10.0, 15.0, self.tableView.frame.size.width - 20, 44.0)这样设置框架? 【参考方案1】:

我在 UIView 中添加了按钮,然后将 tableFooterView 设置为此 UIView 对象并且它工作。我们不能直接把 UIButton 作为 tableFooterView。

【讨论】:

可以,但是表格视图将 autoResizingMask 设置为所有四个角。您应该更改它以使其正常工作。【参考方案2】:

尝试这样做。设置IBOutlet UIView *footerView;并合成。使用方法将其添加为子视图-

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

if(footerView == nil) 
    //allocate the view if it doesn't exist yet
    footerView  = [[UIView alloc] init];


    //create the button
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setFrame:CGRectMake(10, 3, 300, 44)];

    //set title, font size and font color
    [button setTitle:@"Click Me" forState:UIControlStateNormal];
    [button.titleLabel setFont:[UIFont boldSystemFontOfSize:18]];

    //set action of the button
    [button addTarget:self action:@selector(clickPressed:)
     forControlEvents:UIControlEventTouchUpInside];

    //add the button to the view
    [footerView addSubview:button];


//return the view for the footer
return footerView;

【讨论】:

来自 UITableView.h:@property(nonatomic,retain) UIView *tableFooterView; // accessory view below content. default is nil. not to be confused with section footer 【参考方案3】:

对 Legolas 的好回答的一个重要补充:您需要实现 tableView 委托方法:

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

这让我发疯了,因为按钮(或者,在我的情况下,按钮)没有响应触摸事件。添加委托方法使一切变得更好。 :-)

【讨论】:

Legolas 的答案在这种情况下并不好,因为 tableFooterView != footerInSection,而 Abhinav 要求第一个。第一个用于整个表,第二个仅用于部分(您可以拥有很多)。检查 EmilioPelaez 评论。

以上是关于在表格页脚视图中放置一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

iOS:Tableview 页脚视图在 Scroll 上弹跳

在 UITableView 页脚或页眉中添加 UIButton

表格页脚视图中的UIButton在键盘显示时没有响应触摸

Swift 中的表视图页脚

如何在表格视图中快速添加页脚作为附加信息

强制页脚停留在表格视图中的最后一个单元格下