在表格页脚视图中放置一个按钮
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 上弹跳