title: I don't know why viewForHeaderInSection is not called in swift3
body: <p>I don't know why <code>viewForHeaderInSection</code> is not called in swift3. I've added <code>heightForHeaderInSection</code> in UITableView but not called unfortunately. Please help me to check how to fixed it.</p>
  
  <p><a href="https://i.stack.imgur.com/O7LZY.png" rel="noreferrer"><img src="https://i.stack.imgur.com/O7LZY.png" alt="enter image description here"></a></p>
  
  <pre><code>func numberOfSectionsInTableView(_ tableView: UITableView) -&gt; Int {
      return 3
  }
  
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      switch (section) {
      case 0:
          return homeStrs.count
      case 1:
          return accountStrs.count
      case 2:
          return otherStrs.count
      default:
          return otherStrs.count
      }
  }
  
  func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -&gt; UITableViewCell {
      let cell = menuTable.dequeueReusableCell(withIdentifier: "MenuCell", for: indexPath) as! MenuCell
      cell.layoutMargins = UIEdgeInsets.zero;
      cell.lbNoti.isHidden = true
      switch ((indexPath as NSIndexPath).section) {
      case 0:
          cell.lbMenuTitle?.text = homeStrs[(indexPath as NSIndexPath).row]
          cell.imgIcon.image = UIImage (named: homeImgStrs[(indexPath as NSIndexPath).row])
      case 1:
          cell.lbMenuTitle?.text = accountStrs[(indexPath as NSIndexPath).row]
          cell.imgIcon.image = UIImage (named: accountImgStrs[(indexPath as NSIndexPath).row])
      case 2:
          cell.lbMenuTitle?.text = otherStrs[(indexPath as NSIndexPath).row]
          cell.imgIcon.image = UIImage (named: otherImgStrs[(indexPath as NSIndexPath).row])
      default:
          cell.lbMenuTitle?.text = "Other"
      }
  
      return cell
  }
  
  func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -&gt; CGFloat {
      return 40
  }
  
  func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -&gt; UIView? {
      switch (section) {
      case 1:
          let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 30))
          let menuHeaderLabel = UILabel(frame: CGRect(x: 20, y: 0, width: self.menuTable.frame.size.width, height: 28))
          menuHeaderLabel.text = "Account Settings"
          headerView.addSubview(menuHeaderLabel)
          return headerView
      case 2:
          let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 30))
          let menuHeaderLabel = UILabel(frame: CGRect(x: 20, y: 0, width: self.menuTable.frame.size.width, height: 28))
          menuHeaderLabel.text = "Others"
          headerView.addSubview(menuHeaderLabel)
          return headerView
      default:
          let headerView = UIView(frame: CGRect(x: 0, y: 0, width: self.menuTable.frame.size.width, height: 0))
          return headerView
      }
  }
  </code></pre>