Désolé pour noob question, les gars. Je suis nouveau dans le développement iOS.
Comment créer un contrôleur de vue défini dans XIB?
Lorsque vous créez une nouvelle classe héritée de UIViewController
dans Xcode via "Nouveau fichier" et que vous cochez la case with XIB
, il crée un fichier xib sans élément viewController
. Mais il a plutôt placeholder
qui pointe sur UIViewController
qui est défini dans le code .
Mais je vois que vous pouvez créer le contrôleur lui-même dans Interface Builder et spécifier customClass pour cela.
Malheureusement, ça ne marche pas pour moi. J'ai l'erreur loaded the "EmbeddedViewController" nib but the view outlet was not set
au moment de l'exécution. Mais j’ai pensé que la propriété view
devait être définie automatiquement par le chargeur de ressources car tout était défini via XIB. Cela fonctionne ainsi pour TableView et ses cellules, par exemple.
Pourriez-vous s'il vous plaît donner un exemple comment le faire?
J'ai créé un exemple de projet: https://github.com/cppexpert/SampleWithNib
Le contrôleur en question est EmbeddedViewController
En fait, ces contrôles existent dans IB pour les projets Storyboard.
Créer un Xib par UIViewController
Chaque Xib dispose de l’objet Propriétaire du fichier pour vous permettre de définir la classe UIViewController. Cliquez sur le propriétaire du fichier et choisissez EmbeddedViewController dans sa classe.
Ensuite, faites-y glisser la classe principale UIView et non UIViewController, puis connectez cette vue au propriétaire du fichier en tant que vue. UIViewController utilise simplement pour faire glisser le projet de base StoryBoard.
https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.Zip
Lorsque vous créez un contrôleur de vue avec xib via "nouveau fichier", Xcode génère une variable UIView
et le connecte automatiquement à la sortie view
. On dirait que vous avez changé quelque chose après que Xcode ait généré le fichier xib. Dans ce cas, vous devez connecter une vue à la sortie view
manuellement.
Si vous créez une nouvelle vue dans xib.set le propriétaire du fichier dans votre classe personnalisée. Ou si vous voulez simplement créer une vue. Ensuite
NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];
Où myViewFromNib est votre objet de vue et "View" est votre nom de nib.