2017-08-23 2 views
-1

J'essaie d'ajouter des contraintes à l'étiquette ajoutée à Basic Style Cell dans UITableView, mais elles ne sont pas actives.Comment ajouter des contraintes dans la cellule TableView Basic Style

J'utilise style de base au lieu de personnalisé, parce que je besoin de quelques lignes commencent du titre et un autre de cell.ImageView!.image

Si j'utilise la cellule personnalisée, quand il n'y a pas ImageView, Titre Anyway situé loin de côté gauche de la rangée.

Screenshot:

Screenshot

+0

** Veuillez **, vous devriez nous montrer ce que vous avez essayé et comment échoué. Je vous recommande de voir [cette] vidéo (https://youtu.be/H9NhYx9xIiU?t=273) vidéo et aussi voir [this] (https://stackoverflow.com/questions/18969355/how-to-create-a- custom-uitableviewcell-programatically-using-autolayout). – Honey

+0

J'ai échoué parce que je ne trouve pas de contrainte avec la condition de l'objet voisin existant ou non et parce que les contraintes Basic Style Cell ne sont pas actives et je ne sais pas pourquoi .. –

Répondre

0

Utilisez cellule entièrement sur mesure. Ne même pas déranger avec le prédéfini. Construisez-le vous-même, et vous n'aurez pas à vous soucier de quoi que ce soit et vous pourrez utiliser les contraintes comme vous le souhaitez (assurez-vous qu'elles sont liées à la vue du contenu de la cellule, pas à aucune autre vue). UITableViewCell

+0

Merci répondre, mais je n'ai aucune idée de la contrainte qui fera basculer le titre sur le côté gauche de la ligne, s'il n'y a pas ImageView.J'ai essayé de coller le titre à la vue de l'image avec l'espace principal, mais pas d'accord. –

0

J'ai trouvé réponse dans Apple Documentation: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html

Ce code fonctionne:

import UIKit 

class ViewController: UITableViewController { 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 4 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "ChecklistItem", for: indexPath) 

    let label = cell.viewWithTag(1000) as! UILabel 
    let image = cell.viewWithTag(1001) as! UIImageView 
    let margins = cell.contentView.layoutMarginsGuide 

    if indexPath.row == 0 { 
     label.text = "First row" 
    } else if indexPath.row == 1 { 
     label.text = "Second row" 
     image.image = UIImage(named: "test") 
    } else if indexPath.row == 2 { 
     label.text = "Third row" 
     label.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true 

    } else if indexPath.row == 3 { 
     label.text = "Fourth row" 
    } 
    return cell 
    } 
} 

Screenshot