我在一个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中显示时,我有一个数据,所以那时页脚位置发生了变化。我想在最初的地方修剪页脚。
修改
作为替代解决方案,可以通过在末尾添加额外的单元格来添加按钮。
答案 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”属性中的视图添加为整个表格的页脚,而不仅仅是该部分