我想在分组的tableview中自定义标题。
我知道我可以通过做类似以下的事情来做到这一点:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *sectionHeaderView = [[UIView alloc] initWithFrame:
CGRectMake(0, 0, tableView.frame.size.width, 50.0)];
//configure the UIView
return sectionHeaderView;
}
我是iOS开发的新手,到目前为止,我只是通过将我想要使用的元素拖放到我的视图中,在storyboad中配置了自定义视图。
因此我的问题是:是否可以在故事板中自定义标题视图的外观?
我想在某些标题中添加按钮,例如。请记住,我想为每个部分使用不同的标题。
答案 0 :(得分:2)
就像Mr_bem说的那样,您可以使用XIB文件来执行此操作,请注意尽管loadNibNamed方法返回NSArray,但您的视图应该是第一个,我很容易实现它:
heres a shot of a tableview using a XIB header
确保包含代码,32.f高度来自我创建的自由格式XIB的大小:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 32.f;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
NSArray *headerViewArray = [[NSBundle mainBundle] loadNibNamed:@"headerView" owner:self options:nil];
UIView *headerView = [headerViewArray objectAtIndex:0];
return headerView;
}
这就是XIB的样子 - > header XIB
答案 1 :(得分:1)
您可以,只需创建一个XIB文件,然后在那里自定义视图,然后像这样加载视图:
MyCustomView* nibView = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil][0];
然后在你的委托函数(Y)中返回它:)
答案 2 :(得分:0)
您可以使用UIView
方法将UI元素添加到addSubView:
。
这样的事情:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *sectionHeaderView = [[UIView alloc] initWithFrame:
CGRectMake(0, 0, tableView.frame.size.width, 50.0)];
//configure the UIView
// Initialize an UIButton
UIButton *someButton = [[UIButton alloc] init];
// Give it a title
someButton.titleLabel.text = @"Touch me :3";
// Add the button to the headerView
[sectionHeaderView addSubView:someButton];
return sectionHeaderView;
}
如果您想要将不同的UIView用于不同的部分,请使用if
函数:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
// If this is the first section (0 section)
if (section == 0) {
UIView *sectionHeaderView = [[UIView alloc] initWithFrame:
CGRectMake(0, 0, tableView.frame.size.width, 50.0)];
//configure the UIView
// Initialize an UIButton
UIButton *someButton = [[UIButton alloc] init];
// Give it a title
someButton.titleLabel.text = @"Touch me On section One :3";
// Add the button to the headerView
[sectionHeaderView addSubView:someButton];
return sectionHeaderView;
}
// If this is the second section (1 section)
if (section == 1) {
UIView *sectionHeaderView = [[UIView alloc] initWithFrame:
CGRectMake(0, 0, tableView.frame.size.width, 50.0)];
//configure the UIView
// Initialize an UIButton
UIButton *someButton = [[UIButton alloc] init];
// Give it a title
someButton.titleLabel.text = @"Touch me On sectio Two :3";
// Add the button to the headerView
[sectionHeaderView addSubView:someButton];
return sectionHeaderView;
}
}
祝你好运。
答案 3 :(得分:0)
您可以使用原型单元格通过故事板进行操作,然后对要添加到其中的任何UIButtons,UILabels等使用标记。
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UITableViewCell *cell= [tableView dequeueReusableCellWithIdentifier:@"HEADER_CELL"];
// Stuff you want to do to your header
// Tag can be anything except 0. You set this in the interface builder
UILabel * myHeaderLabel = (UILabel *)[cell viewWithTag:1];
UIButton * myHeaderButton = (UIButton*)[cell viewWithTag:2];
myHeaderLabel.text = [NSString stringWithFormat:@"Section: %d", section];
myHeaderButton.title = @"Button Title";
// headerButtonClicked is a function you want the button to do
[myHeaderButton addTarget:self action:@selector(headerButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
创建单击按钮时的功能
-(void)viewActivityMoreInfo:(id)sender
{
UIButton *btnClicked = (UIButton *) sender;
// do something here
}