J'ai un ViewController + xib existant dans mon projet et je souhaite maintenant ajouter un UITableView avec des cellules statiques, comme ceci:
Mais lorsque je traîne une UITableView sur mon écran, le menu "Contenu> Statique" de l'inspecteur d'attributs ne s'affiche pas.
J'ai essayé de créer la sous-classe de contrôleur UITableViewController, mais cela ne m'aide pas. Je n'ai toujours pas la possibilité d'utiliser des cellules statiques dans l'inspecteur d'attributs.
J'ai regardé autour de StackOverflow mais je n'ai trouvé aucune réponse à cette question. Toutes les questions existantes concernent des Storyboards (que je n'utilise pas) au lieu de fichiers xib.
Je suppose que Xcode fait une sorte de magie lorsque vous ajoutez un UITableViewController à un storyboard, mais pas lorsque vous modifiez une xib existante pour hériter de UITableViewController.
Des conseils sur la manière d’ajouter une vue sous forme de tableau avec des cellules statiques à un xib existant?
Les cellules de vue de table statique ne sont disponibles que lors de l'utilisation de storyboards. Cependant, si vous n'utilisez pas de story-boards pour toute votre interface utilisateur, vous pouvez les utiliser pour des écrans individuels au lieu d'une collection d'écrans.
Pour ce faire, vous pouvez créer un fichier UIStoryboard avec un contrôleur de vue unique dont le propriétaire du fichier est défini sur votre sous-classe de contrôleur de vue personnalisé. Définissez l'identifiant du VC sur une valeur. Lorsque vous souhaitez afficher ceci, récupérez le storyboard, puis instanciez votre sous-classe de contrôleur de vue en créant le VC à partir de votre storyboard.
UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"your storyboard" bundle:nil];
CustomViewController = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"custom identifier"];
Vous pouvez présenter ce VC comme d'habitude dans votre application.
C'est un excellent moyen de commencer à utiliser des storyboards sans avoir à convertir toute votre application pour pouvoir les utiliser.
Ceci est faisable sans storyboards:
Les événements pour les contrôles pour les cellules de tableau doivent aller à vos routines de gestionnaire ...
Exemple pour l'étape 4:
Pour développer la réponse de BVB, en ce qui concerne le numéro 10, voici les extraits de code Swift 3 pour vos méthodes de délégué tableview. Assurez-vous d’ajouter des points de vente à toutes vos cellules du xib.
Lorsque vous créez manuellement vos sections de vue tableau, rappelez-vous que indexPath
est égal à un tableau à 2 dimensions représentant la structure de votre table. Par exemple, lorsque indexPath
est passé à tableView(cellForRowAt indexPath: IndexPath)
est égal à [1][0]
, votre cellule sera placée à la première position de la deuxième section.
Les valeurs peuvent être extraites de indexPath
avec les propriétés indexPath.row
et indexPath.section
. En utilisant ces valeurs, vous pouvez construire manuellement vos sections à partir de vos IBOutlets dans l'ordre de votre choix.
@IBOutlet var is_enabled: UITableViewCell!
@IBOutlet var is_public: UITableViewCell!
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch(section){
case 0:
return "Cell 1"
case 1:
return "Cell 2"
default: return ""
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("index path here", indexPath)
if(indexPath.section == 0) {
return is_enabled
}
else if(indexPath.section == 1) {
return is_public
} else {
return is_enabled
}
}