我正在开发一个应用程序,我需要标题来自定义并添加我自己的按钮,仅用于单个部分。我用Google搜索并完成了一些我可以添加按钮的代码,但我面临两个问题。
由于添加按钮后的tableview滚动大小相同,按钮无法正常显示。 这就是我在做的事情。
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView * headerView = [[[UIView alloc] initWithFrame:CGRectMake(1, 0, tableView.bounds.size.width, 40)] autorelease];
[headerView setBackgroundColor:[UIColor clearColor]];
if(section==2){
float width = tableView.bounds.size.width;
int fontSize = 18;
int padding = 10;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(padding, 2, width - padding, fontSize)];
label.text = @"Texto";
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.shadowColor = [UIColor darkGrayColor];
label.shadowOffset = CGSizeMake(0,1);
label.font = [UIFont boldSystemFontOfSize:fontSize];
[headerView addSubview:label];
UIButton * registerButton = [UIButton buttonWithType:UIButtonTypeCustom];
[registerButton setImage:[UIImage imageNamed:@"P_register_btn.png"] forState:UIControlStateNormal];
[registerButton setFrame:CGRectMake(0, 0, 320, 150)];
[headerView addSubview:registerButton];
return headerView;
}
return headerView;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 3;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if(section==0)
return @"Registration";
else if(section==1)
return @"Player Detail";
return nil;
}
这是我的输出的图像,其中Texto文本显示但是按钮在表视图滚动高度的结束限制以及第0和第1部分标题未显示的区域下面我也阻止第1和第2部分的代码viewforheaderinsection。提前致谢。
答案 0 :(得分:0)
其他标题名称不会出现,因为viewForHeader方法仅回答第2节。一旦实现,数据源要求该方法成为所有标题的权限。只需为其他部分添加一些其他逻辑......
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView * headerView;
UILabel *label;
if (section==2) {
headerView = [[[UIView alloc] initWithFrame:CGRectMake(1, 0, tableView.bounds.size.width, 40)] autorelease];
[headerView setBackgroundColor:[UIColor clearColor]];
// and so on
return headerView;
} else if (section == 0) {
label = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,tableView.bounds.size.width, 44)] autorelease];
label.text = @"Section 0 Title";
return label;
} else .. and so on
此方法回答的标题看起来是40px高(请参阅initWithFrame),但添加的按钮高150px(请参阅setFrame:按钮)。这可能是按钮问题的根本原因。尝试实施:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return (section == 2)? 150.0 : UITableViewAutomaticDimension;
}