Création d'une application Cocoa sans PLUME fichiers
Oui, je sais que cela va à l'encontre de l'ensemble de la MVC principe!
Cependant, je suis juste en train de concocter un assez trivial à l'application et j'ai assez bien mis en œuvre. Cependant, j'ai un problème...
- Je créer un projet vide, copier tous les cadres de cours et de définir les paramètres de construction - et j'ai des erreurs sur le fichier exécutable, ou l'absence de l'exécutable. Les paramètres de construction semblent tous très bien, mais il me dit il n'y a pas d'exécutable - il va construire + fonctionne parfaitement. Cependant il ne fonctionne pas. Il n'y a pas d'erreur soit - il paraît juste de courir très vite et proprement! À moins que j'essaie de le lancer GDB qui, poliment, m'indique que je dois lui donner un fichier en premier..
Running…
No executable file specified.
Use the "file" or "exec-file" command.
J'ai donc créé une application Cocoa, supprimé toutes les choses que je n'ai pas besoin (c'est le MainMenu.xib
fichier..), et maintenant je peux compiler mon code parfaitement. Toutefois, il meurt à se plaindre que c'est
"Impossible de charger le fichier nib: MainMenu, la sortie de"
Je suis passé par le Projet de Symboles et de voir que le code s'appuie sur le fichier NIB fortement, même si vous ne le touchez pas au niveau du code. (MVC encore, je suppose..)
Est-il un moyen simple de compiler juste ce que vous code, pas d'ajout de fichiers NIB, juste le code que vous écrivez et les cadres de vous ajouter? Je suppose qu'il serait un projet vide, mais mon expérience me dit le contraire?!
- Vouliez-vous dire "par programmation?"
- Programmatique ne veux pas dire quelque chose à l'encontre de la MVC. MVC est juste la façon d'organiser le code du composant, et IB/PLUME/Storyboard sont en rien liées à la MVC. Ils sont juste des outils pour vous aider à tirer de l'INTERFACE utilisateur. Vous pouvez faire MVC sans ces outils à tous.
Vous devez vous connecter pour publier un commentaire.
Bien sûr, vous pouvez écrire du code et de ne pas utiliser Interface Builder.
Avez-vous vérifié vos informations.plist? Par défaut, il s'agit d'une entrée là pour MainMenu.xib et il se peut que la référence c'est de se plaindre.
C'est la méthode que j'utilise dans mes applications. Désolé pour la mise en forme, j'espère que vous pouvez le faire sortir. Je ne sais pas comment faire pour désactiver la fonction d'auto-mise en forme ici.
Bien sûr, il n'y aura pas de fonctionnement menu principal de cet exemple, c'est beaucoup trop de code pour moi d'écrire sur un post comme ceci 😛 - Désolé, sortir faire un peu de recherche sur ce 😉
Cela devrait vous aider à démarrer:
AppDelegate.h
AppDelegate.m
principal.m
Si c'est un quelques années question...
Voici minimale extrait de code pour démarrer une application Cocoa en Swift.
Aussi, je suis maintenant un tas de programmatiques exemples pour le Cacao, y compris l'amorçage, la fenêtre, le menu créations.
Voir les sous-projets pour la langue souhaitée.
Expressions are not allowed at the top level
sur la ligne de autoreleasepool. Xcode 6.4.main.swift
.Le problème est peut-être que vous êtes toujours à l'appel
NSApplicationMain
dans votremain
fonction (enmain.m
). Si vous n'êtes pas le chargement d'une plume commeMainMenu.nib
, vous aurez probablement à arracher l'appel àNSApplicationMain
et d'écrire votre propre code dansmain
pour le démarrage de l'application.Swift 4 version avec
NSToolbar
etNSMenu
(avec des gestionnaires d'événement au lieu de délégués):Fichier principal.swift:
Fichier: Application.swift
Fichier MainWindowController.swift
Fichier MainViewController.swift
Fichier MainToolbar.swift
Fichier MainMenu.swift
Commodité des extensions de.
Fichier NSMenu.swift
Fichier NSMenuItem.swift
Fichier NSToolbar.swift
Fichier NSToolbarItem.swift
Fichier ObjCAssociation.swift
Ici est Casper est la solution, mis à jour à l'ARC comme par Marco suggestion:
7 ans trop tard pour le parti, mais un peu plus simple fichier unique code
L'exemple de code swift pour la autoreleasepool extrait de fourni ci-dessus ne fonctionne pas dans moderne Xcode. Au lieu de cela, vous avez besoin de se débarrasser de l' @NSApplicationMain dans votre Délégué d'Application fichier source, si il y a un (Xcode ajoute maintenant ces pour de nouveaux projets), et ajouter un principal.swift fichier qui contient les éléments suivants:
Haut niveau de l'exemple de code ci-dessus ne fonctionne plus dans les dernières versions de Xcode. Au lieu d'utiliser ceci:
Bien sûr, il est trop tard pour répondre sur ce sujet, mais pour n'importe qui qui est la réflexion sur la création d'une Application iOS sans Xib(Nib), les fichiers doivent garder cette chose à l'esprit.
Voir cette Documentation pour en savoir plus sur ce que apple a à dire sur cette approche
J'espère que cela pourrait aider quelqu'un dans le futur. Merci!
Ne pas utiliser NSApplication et NSApp ...
Vous suffit de spécifier la classe qui implémente l'UIApplicationDelegate protocole :