J'ai un UITableViewController
avec une liste de coutume UITableViewCells
. La cellule a du texte, qui est parfois long. Je tronque cela à 2 lignes dans la table.Intégrer UITableViewCell personnalisé dans un autre UIView personnalisé?
Lorsqu'un utilisateur touche la cellule, je veux créer un UIView
comme un pop-up avec exactement les mêmes informations que le UITableViewCell
, avec l'ajout d'un en-tête au-dessus du contenu UITableViewCell
. Donc, pour l'essentiel, je veux quelque chose comme ce qui suit:
J'ai construit VersePopupView
comme indiqué dans l'image, où le texte « en-tête personnalisé » est en fait un UILabel. J'ai instancié la vue à partir du fichier XIB et correctement défini le texte UILabel, mais le UITableViewCell
personnalisé n'apparaît pas, même si j'ai également affecté cette valeur. Mes IBOutlet
s sont tous branchés sur IB.
Voici mon instanciation:
let popupView: VersePopupView = VersePopupView.instanceFromNib()
popupView.frame = CGRect(x: 10, y: 100, width: 300, height: 100)
popupView.assignVerseTableViewCell(cell: cell)
window.addSubview(popupView)
window.makeKeyAndVisible()
Et voici ma classe VersePopupView:
class VersePopupView: UIView {
@IBOutlet weak var cell: VerseTableViewCell!
@IBOutlet weak var title: UILabel!
@IBOutlet weak var headerView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
class func instanceFromNib() -> VersePopupView {
return UINib(nibName: "VersePopupView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! VersePopupView
}
func assignVerseTableViewCell(cell: VerseTableViewCell)
{
// Assign it
self.cell = cell
// Get the verse details
if let verseDetails = cell.verse_details {
self.title.text = verseDetails.verseReference()
// Adjust the frame
// Adjust the text to be attributed text
// Set the title to the verse reference
// Anything else?
}
}
}
Qu'est-ce que je fais mal ce que le UITableViewCell n'apparaît pas?
Y a-t-il un meilleur modèle pour cela plutôt que d'incorporer UITableViewCell?
Je ne veux pas dupliquer le code (ce que j'ai fait dans le passé), parce que je veux que l'utilisateur interagisse avec le popup comme il le ferait dans la cellule du tableau.
N'essayez pas d'utiliser une cellule de vue de table en dehors d'une vue de table ... – matt
@matt - pourquoi pas? Quel modèle dois-je utiliser, alors? Comment puis-je éviter de dupliquer tous les éléments de l'interface utilisateur et les interactions avec ces éléments? Je peux afficher le 'UITableViewCell' comme un popup tout seul très bien. Si je n'avais pas besoin de l'en-tête supplémentaire, je serais bien. Mais j'ai aussi besoin de l'en-tête. – thephatp
Je ne sais pas ce que vous entendez par "interactions". Ce n'est pas la vue d'un contrôleur de vue, donc vous ne pouvez pas vous connecter à quoi que ce soit en dehors de celui-ci. Quoi qu'il en soit, si c'était moi, j'aurais une vue xib et ploperait sa vue dans la vue du contenu de la cellule et dans l'autre vue. – matt