2017-07-26 5 views
0

Salut comme le titre dit que l'index.row ne va jamais à 4 à la place, il commence à [2,0]. Ma tableView a 5 lignes. Je ne sais pas quand cela a cessé de fonctionner mais je sais avec certitude que cela a fonctionné avant d'ajouter la ligne timeIndex.indexpath.row réinitialiser après 3 à l'intérieur de tableView heightForRowAt

Il est le "Entrez votre adresse ici" champ que je vais avoir un problème d'affichage

let timeIndex = 2 
let DateLocation = 1 
let locationIndex = 4 
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 



    if userPickedDate && indexPath.row == timeIndex { 
     return 50 
    } 
    if userPickedDate && indexPath.row == DateLocation { 

     return 0 

    } 
    print("The indexPath: \(indexPath)") 
    if remindMeOnLocationSwitch.isOn && indexPath.row == locationIndex { 
     return 100 

    } 
    if remindMeOnDay.isOn && indexPath.row == DateLocation{ 
     return 300 
    } else if indexPath.row == DateLocation || indexPath.row == timeIndex || indexPath.row == locationIndex { 
     return 0 
    } 
    return 50 

} 

tableview

Sortie de la console

Console output

+0

Combien de sections vous avez dans votre vue de table? –

+0

3 où le premier textbox est, puis un au milieu où le remindmeomday commence et le dernier est le [aujourd'hui semaine todo] chose –

+0

je poste une réponse vous pouvez espérer que vous comprendrez pourquoi votre indexPath ne va jamais à 4 –

Répondre

0

Je trouve le problème que j'oublié de mettre à jour le nombre de lignes à l'intérieur de la fonction numberOfRowsInsideSection

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    // Change from [1,4,1] to [1,5,1] 
    let numberOfRowsInSection: [Int] = [1,5,1] 
    var rows: Int = 0 

    if section < numberOfRowsInSection.count { 
     rows = numberOfRowsInSection[section] 
    } 

    return rows 
} 
0

Vous pouvez vérifier ce que vous avoir dans numberOfRowsInSection

func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int 
{ 
    if(section == 0){ 
    return 1 
    } 
    else if(section == 1){ 
     return 2 
    }else{ 
     return 3 
    } 

} 

aurait tort nombre de lignes étant situé dans le numberOfRowsInSection

0

Chaque section aura un nombre différent de lignes. c'est pourquoi votre indexPath ne va jamais à 4. [2,0] signifie le numéro de ligne 0 dans la section 2. vous pouvez vérifier la ligne selon l'article comme celui-ci: -

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.section == 0{ 

    }else if indexPath.section == 1{ 

    }else if indexPath.section == 2{ 
     if indexPath.row == 0{ 
      // here is your fifth row return height for fifth row 
     } 
    } 

} 
+0

Comment pourrais-je faire la cinquième rangée pour montrer alors? –

+0

Hé, je ne suis pas sûr si vous m'avez mal compris, mais c'est la ligne "Entrez l'adresse ici" J'ai un problème de montrer, pas le segmentControll –