IB - Impossible d'affecter une classe à un View Controller
Je suis assez nouveau pour IOS developpement, et je suis confronté à un problème que je n'ai pas rencontré avant. Voici ce que j'ai :
J'ai créé un projet, ajouter un peu de ViewControllers attachés à leurs propres classes. Mais maintenant, j'ai juste ajouté un nouveau ViewController dans le storyboard. Puis j'ai créé un nouveau Objective-C (classe est une sous-classe de UIViewController). Le problème est que dans IB, je ne peux pas lier le ViewController à la classe nouvellement créée, comme je l'ai simplement ne pas avoir la classe dans la liste fournie par le bureau international (voir l'image ci-dessous). Ma nouvelle classe est appelée MapShownViewController
mais comme vous pouvez le voir sur l'image, il n'est pas disponible.
Il a bien fonctionné pour tous mes autres classes, mais pas pour celui-ci.
Voici la MapShownViewController.h :
#import <UIKit/UIKit.h>
@interface MapShownViewController : UIViewController
@end
Et la MapShownViewController.m :
#import "MapShownViewController.h"
@interface MapShownViewController ()
@end
@implementation MapShownViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Quelqu'un peut-il m'expliquer ce que j'ai fait de mal s'il vous plaît ?
source d'informationauteur Billy McNuggets
Vous devez vous connecter pour publier un commentaire.
J'ai eu exactement ce problème et ça me rendait folle. J'ai d'abord remarqué après la mise à jour XCode pour 4.4 4.1. J'avais un projet que j'avais travaillé dans l'ancienne version de XCode, et j'ai continué à travailler dans la section 4.4. J'ai fait exactement ce que vous avez fait et a créé une nouvelle Vue dans le story-board, puis créé le sous-fichiers de classe, mais la classe n'était tout simplement pas disponible dans la Classe Personnalisée déroulant dans l'IB. Après beaucoup de recherches sur Google et de frustration, j'ai eu recours à Quitter Xcode (complète quitter, pas juste fermer), puis re-démarrer. Puis, comme par magie, tout a commencé à travailler et la nouvelle classe a été immédiatement disponible dans l'IB classe personnalisée déroulante.
A couru dans le même sujet, et le redémarrage de XCode a été d'aucun secours. Vous pouvez toujours cliquer-droit sur le storyboard et sélectionnez
Open As > Source Code
. Trouvez votre vue-contrôleur de l'élément dans le fichier XML et ajouter uncustomClass
attribut:De surpassement manuel FTW :).
Vérifier les paramètres de votre projet. xcode->cibles->phases de construction->compiler les sources
votre viewcontroller de la mise en fichier doit être ajouté à cette liste.
Pour que cela fonctionne, vous devez vous assurer de ce qui suit:
1) L'élément ajouté à la table de montage séquentiel est un UIViewController
2) La classe que vous avez défini a l' UIViewController comme sa super-classe
3) La Classe est correctement intégrée dans le projet.
J'ai été en cours d'exécution dans ce problème et essayé toutes les autres solutions posté ici.
La chose qui a fonctionné pour moi a été d'établir le juste super classe après la création d'une classe personnalisée. Alors vous devriez être capable de trouver et de sélectionner à partir de la classe de liste déroulante.
par exemple
Vérifier si vous avez choisi le bon super classe dans votre nouvelle classe. Parfois, vous pouvez créer une vue contrôleur hérité par un UITableVIewController. On ne peut pas être appliqué à un ViewController modèle dans le Storyboard.
J'ai dû mettre ma classe personnalisée qui héritent de UIViewController et agir en tant que table view controller pour UITableViewController. J'ai fait des truc simple et juste changé ma coutume d'héritage de classe ": UITableViewController" et puis je peux définir cette classe librement sur le contrôleur. Bien sûr, après c'était réglé, j'ai changé l'héritage de retour.
J'ai eu le même problème avec Xcode 7.1.1 sur un Mac OSX app. J'ai essayé toutes les suggestions des autres réponses – pas de succès.
Enfin j'ai supprimé mon point de vue, contrôleur de fichiers et créé la marque de nouvelles.
Puis soudain, elle a travaillé...
Juste en ajoutant une autre solution possible qui a aidé à résoudre mon problème, puisque les autres n'ont pas.
J'ai remarqué que la recherche de ma Vue personnalisée Contrôleur de fichier à l'aide de la Commande+Maj+O, il a été trouvé, mais je ne pouvais pas voir le répertoire dans lequel le fichier a été, donc, j'ai remarqué que, pour quelque raison ma classe personnalisée qui manquait dans le projet, mais encore être trouvé dans la recherche.
Tout ce que j'avais à faire était de déplacer les fichiers dans le projet de nouveau et le tour est joué!
Espère que cela peut aider quelqu'un dans le futur.