web-dev-qa-db-fra.com

UITableView get titleForHeadersInSection swift

Je veux définir le titre de l'en-tête dans la section de UITableView. Quelle est la syntaxe dans Swift pour définir le titre de l'en-tête dans la section.

func tableView( tableView : UITableView,  titleForHeaderInSection section: Int)->String
{
    switch(section)
    {
    case 2:
        return "Title 2"
        break
    default:
        return ""
        break
    }

}

func tableView (tableView:UITableView , heightForHeaderInSection section:Int)->Float
{

    var title = tableView.titleForHeaderInSection[section];
    if (title == "") {
        return 0.0;
    }
    return 20.0;
}

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

    var title = tableView.titleForHeaderInSection[section] as String
    if (title == "") {
        return UIView(frame:CGRectZero);
    }
    var headerView:UIView! = UIView (frame:CGRectMake(0, 0, self.tableView.frame.size.width, 20.0));
    headerView.backgroundColor = self.view.backgroundColor;

    return headerView;
}
13
Anupam Mishra

Vous pouvez utiliser la fonction déjà définie dans votre classe, c'est-à-dire:

self.tableView (tableView, titleForHeaderInSection: section)

Par exemple, en utilisant votre code:

func tableView( tableView : UITableView,  titleForHeaderInSection section: Int)->String {
   switch(section) {
     case 2:return "Title 2"

     default :return ""

   }
}

func tableView (tableView:UITableView , heightForHeaderInSection section:Int)->Float 
{

    var title = self.tableView(tableView, titleForHeaderInSection: section)
    if (title == "") {
        return 0.0
    }
    return 20.0
}
18
HungryArthur

Pour appeler cette méthode, vous devez utiliser la méthode UITableViews titleForHeaderInSection. Cette méthode fournira l'index de la section en cours et vous devez renvoyer une chaîne, la chaîne retournée sera définie comme en-tête.

Pour invoquer cela, supposons que nous avons un tableau de chaînes appelé cars

cars = ["Muscle", "Sport", "Classic"]

On peut alors simplement appeler

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
{
    // Ensure that this is a safe cast
    if let carsArray = cars as? [String]
    {
        return carsArray[section]
    }

    // This should never happen, but is a fail safe
    return "unknown"
}

Cela renverra les titres des sections dans l'ordre indiqué ci-dessus.

4
Alex