2017-09-21 1 views
0

J'essaie d'ajouter 3 étiquettes & 3 images dans une seule cellule Tablevue. voici mes étiquettes & vues d'imageComment ajouter plusieurs UIImageView dans une cellule TableView

let Namelbl:UILabel={ 
     let label=UILabel() 
     label.text="item" 
     label.translatesAutoresizingMaskIntoConstraints = false 
     return label 

    }() 
    let Namelbl2:UILabel={ 
     let label2=UILabel() 
     label2.text="item" 
     label2.translatesAutoresizingMaskIntoConstraints = false 
     return label2 

    }() 
    let Namelbl3:UILabel={ 
     let label3=UILabel() 
     label3.text="item" 
     label3.translatesAutoresizingMaskIntoConstraints = false 
     return label3 

    }() 
    let image1: UIImageView = { 
     let theImageView1 = UIImageView() 
     theImageView1.image = UIImage(named: "Masjid") 
     theImageView1.translatesAutoresizingMaskIntoConstraints = false 
     return theImageView1 
    }() 
    let image2: UIImageView = { 
     let theImageView2 = UIImageView() 
     theImageView2.image = UIImage(named: "Masjid2") 
     theImageView2.translatesAutoresizingMaskIntoConstraints = false 
     return theImageView2 
    }() 
    let image3: UIImageView = { 
     let theImageView3 = UIImageView() 
     theImageView3.image = UIImage(named: "Masjid3") 
     theImageView3.translatesAutoresizingMaskIntoConstraints = false 
     return theImageView3 
    }() 

Et voici ma fonction pour la mise en place de vue des contraintes

func setupViews(){ 
    addSubview(Namelbl) 
    addSubview(Namelbl2) 
    addSubview(Namelbl3) 
    addSubview(image1) 
    addSubview(image2) 
    addSubview(image3) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-16-[v0]-16-[v1]-16-[v2]-16-[v3]-16-[v4]-16-[v5]-50-|",options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": Namelbl,"v1":Namelbl2,"v2":Namelbl3,"v3":image1,"v4":image2,"v5":image3])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": Namelbl])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": Namelbl2])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": Namelbl3])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": image1])) 

     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": image2])) 
     addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": image3])) 


    } 

le problème est que cela fonctionne très bien pour les 3 étiquettes & une image ne montre pas la deux autres images

+0

Quel est le problème * exact *? "Ne pas montrer" ces deux autres images sont un peu vagues. Par exemple, avez-vous défini un point d'arrêt et déterminé que 'image2' et' image3' ne sont pas nuls? Recevez-vous des commentaires sur la console? – dfd

+0

Oui j'ai fait que image2 et image3 ne sont pas nulles. –

+0

Et quelle est la largeur de ces éléments? Ne semble pas être fixé. – Larme

Répondre

1

Je vous déconseille d'ajouter des vues à vos cellules dans le code (*). Je suggère de configurer votre vue de table pour utiliser des modèles de cellule personnalisés. Vous pouvez ensuite définir une ou plusieurs sous-classes personnalisées de UITableViewCell avec des prises reliées à vos vues d'image, et lorsque vous déposez une cellule avec votre identifiant spécifique, vous obtenez une cellule de la classe correcte avec des points de vente liés et prêts à être configurés. Tout ce que vous avez à faire est de le convertir au bon type, puis de configurer ses vues. (*) Ajouter des vues aux cellules dans le code est plus de travail, et il nécessite également une manipulation spéciale. Si vous ne faites pas attention, chaque fois que vous supprimez une cellule, vous ajoutez un autre ensemble de vues. Lorsque vous corrigez cela, vous avez besoin d'un mécanisme pour accéder aux vues que vous avez ajoutées lors de la création initiale de la cellule, et une approche typique comme viewWithTag(_:) est fragile.

+0

En fait, je mets tout par programme sans rien faire avec storyboard :) –

+0

C'est mal avisé. –

+0

vous avez raison mais c'est mon devoir de le faire de cette façon :( –