How to hide first section header in UITableView (grouped style)

前端 未结 15 936
[愿得一人]
[愿得一人] 2020-12-07 11:15

As the design of table views using the grouped style changed considerably with iOS 7, I would like to hide (or remove) the first section header. So far I haven\'t managed to

15条回答
  •  情深已故
    2020-12-07 11:43

    I have a workaround that seems reasonably clean to me. So I'm answering my own question.

    Since 0 as the first section header's height doesn't work, I return 1. Then I use the contentInset to hide that height underneath the navigation bar.

    Objective-C:

    - (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        if (section == 0)
                return 1.0f;
        return 32.0f;
    }
    
    - (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
    {
        if (section == 0) {
            return nil;
        } else {
            // return some string here ...
        }
    }
    
    - (void) viewDidLoad
    {
        [super viewDidLoad];
    
         self.tableView.contentInset = UIEdgeInsetsMake(-1.0f, 0.0f, 0.0f, 0.0);
    }
    

    Swift:

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return section == 0 ? 1.0 : 32
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        tableView.contentInset = UIEdgeInsets(top: -1, left: 0, bottom: 0, right: 0)
    }
    

提交回复
热议问题