2017-12-09 6 views
0

Ich kann leicht die den Titel für Header-Bereich wie zurückgeben:returing Header-Titel in HeaderSection Tabellenansicht

if(section == 1) { 
} 

und so weiter

Ich habe diese:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    if let UpperView = Bundle.main.loadNibNamed("Head", owner: self, options: nil)?.first as? Head { 
     let sectionTitle = ["Head0","Head1","Head2"] 
     var mysection = 0 
     for sectitile in sectionTitle 
     { 
      if(section == mysection) 
      { 

       UpperView.lhlHead.text = sectitile 
       mysection += 1 

      } 

     }    
     return UpperView 
    } 
    return nil 

} 

Ich möchte setze Head1, Head2, Head3 in einem Label der Header-Ansicht.

Es funktioniert gut, wenn ich diese verwenden:

if(section == 0) { 
    UpperView.lhlHead.text = "Head0" 
} else if(section == 1) { 
    UpperView.lhlHead.text = "Head1" 
} else if(section == 2) { 
    UpperView.lhlHead.text = "Head2" 
} 

Wenn sich die Verwendung Array keine Saiten gesehen. Warum passiert dies?

Antwort

0

Ihre Variable mysection wird immer auf 0 gesetzt, aber sie wird mit der Nummer des aktuellen Abschnitts verglichen, die von 0 bis zur Anzahl der Abschnitte in Ihrer Tabelle variiert. So wird die Prüfung section == mysection nur für den Header des ersten Abschnitts übergeben und Sie werden Titel nur in Header des ersten Abschnitts gesetzt.

Stattdessen gibt diese Funktion Ihnen die Nummer des Abschnitts (section: Int), die verarbeitet wird, und Sie haben sectionTitle Array, die Abschnitt Nummer (Array-Index) mit Abschnitt Titel übereinstimmt. Also statt:

if let UpperView = Bundle.main.loadNibNamed("Head", owner: self, options: nil)?.first as? Head { 
    let sectionTitle = ["Head0","Head1","Head2"] 
    var mysection = 0 
    for sectitile in sectionTitle 
    { 
     if(section == mysection) 
     { 

      UpperView.lhlHead.text = sectitile 
      mysection += 1 

     } 

    }    
    return headerView 
} 
return nil 

können Sie nur verwenden:

if let UpperView = Bundle.main.loadNibNamed("Head", owner: self, options: nil)?.first as? Head { 
    let sectionTitle = ["Head0","Head1","Head2"] 
    UpperView.lhlHead.text = sectionTitle[section]   
    return headerView 
} 
return nil 

Auch nicht Variablennamen Kapital zu schlagen, so dass der richtige Code ist dies:

if let upperView = Bundle.main.loadNibNamed("Head", owner: self, options: nil)?.first as? Head { 
    let sectionTitle = ["Head0","Head1","Head2"] 
    upperView.lhlHead.text = sectionTitle[section]   
    return headerView 
} 
return nil 
Verwandte Themen