web-dev-qa-db-fra.com

Comment créer un contrôleur de vue défini dans XIB?

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

13
expert

En fait, ces contrôles existent dans IB pour les projets Storyboard.

5
expert

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

7
LE SANG

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.

2
cahn

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.

0
Subrat