2017-07-19 1 views
0

Je suis nouveau dans Swift, et maintenant j'essaye de développer une application. J'ai besoin de montrer UITabBarController avec 3 onglets. Chaque onglet a le même ViewController (c'est une classe personnalisée, héritée de UIViewController).Swift UITableView dans le Tabbar

Séquence de mes actions:
1. Mettre TabBarController en story-board, a chuté Tab1 et Tab2 qui ont été situateed en elle par défaut et a une classe personnalisée (ArchiveTabBarController) et ID Storyboard (ArchiveTabBarVC).
2. Placez UITableViewController dans le storyboard, la classe personnalisée pointée (ArchiveTableViewController) et l'ID de storyboard pointé (archiveTableVC).
3. Création d'une cellule personnalisée dans ce TableViewController: pointage d'une classe personnalisée (ArchiveTableViewCell) et d'un identifiant pointé (archiveTableViewCell).
4. Dans mon ArchiveTabBarController, j'ai écrit ce code:

override func viewWillAppear(_ animated : Bool) { 
    super.viewWillAppear(animated); 
    let item1 = ArchiveTableViewController(); 
    item1.archiveType = ""; 
    let item2 = ArchiveTableViewController(); 
    item2.archiveType = "type1"; 
    let item3 = ArchiveTableViewController(); 
    item3.archiveType = "type2"; 
    let controllers = [item1, item2, item3]; 
    self.viewControllers = controllers; 
} 
override func viewDidLoad() { 
    super.viewDidLoad(); 
    delegate = self; 
} 

Dans mon ArchiveTableViewController, dans viewDidLoad(), je fais GET-demande de charger des données. Le résultat dépend de archiveType.
5. Dans mon mainMenuViewController, j'ai fait la transition vers le ArchiveTabBarController.
Et le problème est: quand j'essaye d'aller à l'ArchiveTabBar, il échoue avec l'erreur: impossible de trouver la cellule reuasble avec l'identificateur "archiveTableViewCell". Mais quand j'ai laissé tomber TabBar, et ai essayé d'aller à l'ArchiveTableViewController, cela a fonctionné très bien.

Quelle est mon erreur?

+0

Fournissez votre lien de projet, de sorte que je puisse résoudre le problème! – dip

+0

Désolé, mais je ne sais pas, quel est le lien du projet - il est situé dans mon appareil seulement. – user3533397

+0

J'ai essayé d'enregistrer l'identifiant de réutilisation directement dans le code. Maintenant, il échoue avec l'erreur "Trouvé de façon inattendue nil lors du déballage d'une valeur facultative", lorsque j'essaie de définir du texte dans l'étiquette de ma cellule personnalisée. – user3533397

Répondre

0

Alors, j'ai essayé suivante:
dans mon ArchiveTableViewController, dans viewDidLoad(), je mets à côté:

tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "archiveTableViewCell") 

Et cellForRowAt, j'ai utilisé champ de texte standard pour la cellule stanard. Tout fonctionne bien. Donc, le problème est dans l'enregistrement de la cellule. Quelqu'un peut-il aider?