ios - software - swift tutorial español
Cómo crear una aplicación vacía en Xcode sin Storyboard (14)
Xcode6
ha eliminado la plantilla de
Empty Application
al crear un nuevo proyecto.
¿Cómo podemos crear una aplicación vacía (sin Storyboard) en
Xcode6
y superior, como en versiones anteriores?
Estoy usando XCode6 Beta y busqué otra solución de este problema agregando una plantilla vacía de XCode5.xx a XCode6 Beta.
Para esto, haga clic derecho en XCode5.xx en Aplicaciones, haga clic en ''Mostrar contenido del paquete'' y copie ''Empty Application.xctemplate'' de la ruta dada
Contenidos / Desarrollador / Plataformas / iPhoneOS.platform / Desarrollador / Biblioteca / Xcode / Plantillas / Plantillas de proyectos / Aplicación
Ahora salga de la ventana y abra la ruta dada para XCode6
Contenidos / Desarrollador / Plataformas / iPhoneOS.platform / Desarrollador / Biblioteca / Xcode / Plantillas / Plantillas de proyectos / iOS / Aplicación /
Pegue ''Empty Application.xctemplate'' dentro de la carpeta de la aplicación. Ahora reinicie XCode6 al salir y crear un nuevo proyecto. Obtendrá la opción ''Aplicación vacía''.
Ahora, cuando estoy creando un nuevo proyecto vacío, un archivo .pch se agrega automáticamente en el proyecto (que tenemos que agregar manualmente en XCode6)
Espero que funcione
Hay algunos pasos más que debes hacer:
- Para agregar un archivo de prefijo. (Si lo necesitas)
- Para agregar una imagen de inicio predeterminada, de lo contrario, el tamaño de la aplicación será 320x480 en el iPhone 5.
Así que aquí hay un tutorial completo:
- eliminar el archivo Main.storyboard
- eliminar el archivo LaunchScreen.xib
- eliminar la propiedad "Nombre base del archivo del guión gráfico principal" en Info.plist
- eliminar la propiedad "Iniciar el nombre base del archivo de interfaz de pantalla" en Info.plist
-
agregue el archivo "[nombre de la aplicación] -Prefix.pch" a los archivos de soporte con contenido:
#import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iOS SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif
-
agregue "$ SRCROOT / $ PROJECT_NAME / [pch file name]" a la configuración del proyecto -> Configuración de la compilación -> Apple LLVM 6.0 - Idioma -> "Encabezado de prefijo"
- agregue "SÍ" a la configuración del proyecto -> Configuración de compilación -> Apple LLVM 6.0 - Idioma -> "Encabezado de prefijo de precompilación"
- abra "Image.xcassets" y agregue LaunchImage
- compila el proyecto, luego aparecerá una advertencia sobre la falta de imagen de inicio predeterminada, solo presiona la advertencia y selecciona para agregar la predeterminada, esto agregará "Default-568h @ 2x" O - Si quieres usar imágenes de bienvenida de "Imágenes .xcassets ", vaya a la configuración del proyecto -> OBJETIVOS -> General -> en" Iniciar fuente de imágenes ", elija usar el catálogo de activos, creará uno nuevo, puede elegir luego, que usará como catálogo de activos del existente .
-
application:didFinishLaunchingWithOptions:
implementaciónapplication:didFinishLaunchingWithOptions:
método:self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES;
Hay un paso más que debes hacer:
1) eliminar el nombre base del archivo principal del guión gráfico en el archivo plist
//AppDelegate.h
@property (strong, nonatomic) UIViewController *viewController;
@property (strong, nonatomic) UINavigationController *nav;
//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {`enter code here`
// Override point for customization after application launch.
CGRect screenBounds = [[UIScreen mainScreen] bounds];
UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[window setRootViewController: self.nav];
[window makeKeyAndVisible];
[self setWindow:window];
return YES;
}
La respuesta de Akhils es totalmente correcta. Para aquellos de nosotros que usamos Swift, sería así:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
No hay ninguna opción en
XCode6
y versiones anteriores para crear directamente una aplicación vacía como en
XCode5
y
XCode5
anteriores.
Pero aún así podemos crear una aplicación sin
Storyboard
siguiendo estos pasos:
-
Crear una
Single View Application
. -
Elimine
Main.storyboard
yLaunchScreen.xib
(selecciónelos, haga clic con el botón derecho y elija eliminarlos del proyecto o eliminarlos por completo). -
Elimine las entradas "Nombre base del archivo de guión gráfico principal" y "Nombre base del archivo de interfaz de pantalla de
Info.plist
" en el archivoInfo.plist
. - Abra AppDelegate.m y edite applicationDidFinishLaunchingWithOptions para que se vea así:
Swift 3 y superior:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.backgroundColor = UIColor.white
self.window?.makeKeyAndVisible()
return true
}
Swift 2.x:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
C objetivo:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.rootViewController = [[ViewController alloc] init];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
Otros ya han explicado cómo deshacerse del guión gráfico, por lo que omitiré ese aquí. Así es como prefiero hacerlo en mi código con menos encadenamiento opcional (escrito en Swift 3.1):
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
window.backgroundColor = .white
window.rootViewController = MyRootViewController()
window.makeKeyAndVisible()
self.window = window
return true
}
Puede crear su propia plantilla de proyecto para Xcode. Para su solicitud, puede usar la plantilla en este sitio:
Sí, o simplemente use una de las versiones beta anteriores para crearla y continúe con la última versión posterior.
Tengo la plantilla de aplicación vacía original que se usó en las versiones de Xcode anteriores a Xcode 6. La he subido here .
Puede descargarlo y pegarlo en el directorio de plantillas de Xcode manualmente o instalarlo usando el administrador de paquetes para Xcode, Alcatraz . Simplemente busque Xcode Empty Application .
Un enfoque simple sería copiar la plantilla de
Empty Application
XCode 5
el directorio de plantillas de
XCode
.
Puede descargar la plantilla de
Empty Application
XCode 5
desde
here
, luego descomprimirla y copiarla a
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
directorio.
PD: este enfoque también funciona con Swift.
Editar
Como lo sugiere @harrisg en un comentario a continuación, puede colocar la plantilla mencionada anteriormente en
~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
folder para que esté disponible incluso si se actualiza Xcode.
Y si no existe tal directorio, entonces es posible que deba crear esta estructura de directorio:
Templates/Project Templates/iOS/Application/
en
~/Library/Developer/Xcode/
Utilizando este enfoque simple, puedo crear una
Empty Application
en
XCode 6
.
(Captura de pantalla adjunta a continuación)
¡Espero que esto ayude!
Actualización: Swift 5 y iOS 13:
- Crear una aplicación de vista única.
- Eliminar Main.storyboard (clic derecho y eliminar).
- Elimine "Nombre del guión gráfico" de la configuración de escena predeterminada en el archivo Info.plist:
-
Abra
SceneDelegate.swift
y cambie lafunc scene
de:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
a
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).x
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = ViewController()
self.window = window
window.makeKeyAndVisible()
}
}
Eliminar el archivo Main.storyboard
Esto simplemente se puede eliminar.
Actualice el archivo ProjectName-Info.plist
Elimine la clave del
Main storyboard base file name
principal.
Cree un archivo plumín y enlace al controlador de vista del proyecto
1.Cree un archivo plumín (Archivo -> Nuevo -> Archivo -> Ver)
2. Actualice la clase
File''s Owner''s
a lo que se llama el controlador de vista del proyecto
3.Enlace la salida de
view
File''s Owner''s
al objeto de
view
en el archivo plumín
Actualiza el delegado de la aplicación
1.Importar el archivo de encabezado del controlador de vista del proyecto
2. Actualice la aplicación
:didFinishLaunchingWithOptions:
método:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MyViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
}
Para
Xcode 8
y
Swift 3
.
Simplemente elimine el archivo
.storyboard
, eliminará automáticamente la referencia correspondiente de su
.plist
y en su
AppDelegate.swift
agregue el siguiente código.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Puede escribir su propio ViewCountroller personalizado y usarlo en
AppDelegate.swift
como su
self.window?.rootViewController
, simplemente reemplace el UIViewController con su propio ViewController en el código anterior.
Xcode 9.3.1 y Swift 4
- En primer lugar, debe eliminar Main.storyboard en el menú Navegador de proyectos .
- Que eliminar el nombre base del archivo principal del guión gráfico en Info.plist .
- Y no se olvide de eliminar la interfaz principal de la celda (solo elimine Main ) en su objetivo de proyecto - General - Información de implementación
-
Después de esos pasos, vaya a AppDelegate.swift y en la función didFinishLaunchingWithOptions escriba lo siguiente:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. window = UIWindow(frame: UIScreen.main.bounds) window?.makeKeyAndVisible() window?.rootViewController = UINavigationController(rootViewController: ViewController()) return true }