tab subir publicar costo bar app ios objective-c xcode

ios - subir - ¿Cómo carga XCode el guión gráfico principal?



subir app a app store 2018 (6)

Cuando creo una nueva aplicación de vista única en XCode 4.6 utilizando el guión gráfico, podemos ver que la función principal crea una nueva aplicación usando el delegado de la aplicación como este:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));

Sin embargo, si miramos MyAppDelegate.hy MyAppDelegate.m, no hay ningún lugar en el código que haga referencia a MainStoryboard.storyboard. Esto difiere de una versión que no es un storyboard donde podemos encontrar la línea de código que carga el archivo de punta programáticamente.

Entonces mi pregunta es, ¿cómo se carga el guión gráfico? (¿Dónde debo empujar para encontrarlo?)

Gracias


Eche un vistazo a la discusión de UIApplicationMain :

Discusión
Esta función instancia el objeto de la aplicación de la clase principal y crea una instancia del delegado (si corresponde) de la clase determinada y configura el delegado para la aplicación. También configura el ciclo del evento principal, incluido el ciclo de ejecución de la aplicación, y comienza a procesar los eventos. Si el archivo Info.plist de la aplicación especifica un archivo de punta principal que se va a cargar, al incluir la clave NSMainNibFile y un nombre de archivo de punta de prueba válido para el valor, esta función carga ese archivo de punta.

Cuando se llama a UIApplicationMain, se carga un archivo plist que contiene toda la información de la aplicación:

Así es como "entiende" que el archivo xib / storyboard necesita ser cargado.


En Xcode, la sección Info.plist legible para el ser humano que determina el guión gráfico principal es:

Main storyboard file base name

En texto sin formato, la clave es UIMainStoryboardFile :

<key>UIMainStoryboardFile</key> <string>Main</string>


Mire su configuración de Target para el Proyecto

Observe la configuración del guión gráfico principal.

Si quisieras hacer esto en código tú mismo, harías algo así como.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]]; UIViewController *vc = [storyboard instantiateInitialViewController]; // Set root view controller and make windows visible self.window.rootViewController = vc; [self.window makeKeyAndVisible]; return YES; }


Se inicia desde la configuración de UIMainStoryboardFile desde su archivo info.plist. Xcode luego crea una ventana principal, crea una instancia de su primer controlador de vista y lo agrega a la ventana. Todavía puede hacer esto en un código similar al .nib usando

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController* initialView = [storyboard instantiateInitialViewController];


Si quiere crear instancias con Swift

var storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) var vc : AnyObject! = storyboard.instantiateInitialViewController() self.window!.rootViewController = vc as UIViewController self.window!.makeKeyAndVisible()


Un poco tarde para la fiesta, pero puede acceder a viewController desde la ventana como se muestra a continuación

@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { var viewController = window?.rootViewController as? ViewController if let viewController = viewController { // do awesome stuff } return true } }