UITableViewでsectionのヘッダーに英字を設定すると大文字になってしまう

題名の通り。↓のようになってしまった、、!
f:id:dakaradame:20150802152725p:plain:w260

iPhoneの設定画面とかは大文字になっているので
こういうものなのかなーと思いつつもそれではだめな時があるので修正しました

コード

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    /// ヘッダに設定するタイトル
    let headers:[String] = [
        "Twitter",
        "Facebook",
        "mixi"
    ]
    
    var tableView:UITableView?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let width = self.view.bounds.width
        let height = self.view.bounds.height
        
        self.tableView = UITableView(frame: CGRect(x: 0, y: 0, width: width, height: height), style: .Grouped)
        self.tableView!.delegate = self
        self.tableView!.dataSource = self
        self.view.addSubview(self.tableView!)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    /** セクション数 */
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return self.headers.count
    }
    /** セクション内のセル数 */
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }
    /** セル */
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
   
    /** ①ヘッダの高さを指定 */
    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if section == 0 {
            return 60
        }
        // -1を返すとデフォルト値が設定される
        return -1
    }
    /** ②ヘッダセクションに設定するviewを作成 */
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        var headerView = UITableViewHeaderFooterView()
        headerView.textLabel.text = self.headers[section]
        headerView.contentView.backgroundColor = UIColor.redColor()
        return headerView
    }

躓いたところとか

最初②のviewForHeaderInSectionのみでやろうと思っていたのですが
一番目のセクションだけ表示されない問題が、、
f:id:dakaradame:20150802152701p:plain:w260


そこで①heightForSectionで高さを指定しています
これと一緒に使わないとうまく動作しないらしい、、
上記のコードでは毎回60返してしまうと一つ目のセクションヘッダ以外も
広がってしまうんで初回だけ60返すようにしてみました。
ちなみにデフォルトの-1は一番最初のセクションには効かないみたい、、です?
というかデフォルトが0なんだろか、、まだそこまで見ていない

willDisplayHeaderView

メモ書き。
最初willDisplayHeaderViewを使ってやろうと思っていたら
このメソッドが呼ばれない!という事態、、
調べてみたらwillDisplayHeaderViewはUITableViewを継承していないと呼ばれないメソッドだった。
ただ個人的にはUITableViewを継承したくないので却下。
あと継承しなくても、viewForHeaderInSectionを使うと呼ばれた。

出来上がったのがこちら

やったね!
f:id:dakaradame:20150802152708p:plain:w260