web-dev-qa-db-fra.com

Lancer le simulateur iOS à partir de Xcode et obtenir un écran noir, suivi par Xcode suspendu et incapable d’arrêter des tâches

Je ne parviens pas à exécuter mon application iPhone de base (lors de la lecture des conférences Stanford iTunes CS193p) dans le simulateur iOS.

Je cherchais depuis un certain temps (Google et SO), mais je n'ai pas trouvé de solution pour l'instant. Il y a beaucoup de bugs similaires, mais les solutions ne semblent pas résoudre ce problème.

Dans Xcode, je clique sur "Exécuter". Il compile et construit avec succès, lance le simulateur iOS mais n'arrive jamais à charger l'application. Seule la barre d'état en haut. Avec un écran noir.

Je n'ai écrit que du code très basique (à la suite des conférences) et je ne peux pas surmonter ce problème. 

Pour compliquer davantage les choses, j’ai écrit un wrapper Web (UIWebView) avant ces conférences et cela fonctionne bien. Mais il n'y a pratiquement aucune différence dans le code. Toutes les nouvelles applications que je crée à partir de zéro échouent toutes avec le même problème d'écran noir. 

Si je clique sur le bouton d'accueil du simulateur et lance l'application, celle-ci s'affichera. Mais Xcode ne semble pas savoir ce qui se passe.

C'est comme si Xcode avait perdu la capacité de parler au simulateur iOS et supposait qu'il était en cours d'exécution (même si je quittais le simulateur iOS). J'essaie de quitter Xcode et il me demande d'arrêter les tâches. Ensuite, il se bloque. Je dois donc forcer le redémarrage pour sortir de Xcode.

J'utilise: OSX 10.8.2 Xcode 4.5.2 IOS Simulator 6.0

CalculatorAppDelegate.h

#import <UIKit/UIKit.h>

@interface CalculatorAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

CalculatorAppDelegate.m

#import "CalculatorAppDelegate.h"

@implementation CalculatorAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

CalculatorViewController.h

#import <UIKit/UIKit.h>

@interface CalculatorViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *display;

@end

CalculatorViewController.m

#import "CalculatorViewController.h"

@implementation CalculatorViewController

@synthesize display = _display;

- (IBAction)digitPressed:(UIButton *)sender
{
    NSString *digit = [sender currentTitle];
NSLog(@"digit pressed = %@", digit);
}

@end
67
Matt

Étonnamment, ce qui a fonctionné pour moi était d'aller dans le menu du simulateur iOS et d'appuyer sur «Réinitialiser le contenu et les paramètres».

73
doug

Avant de réinitialiser l'émulateur, accédez à l'écran de vos projets "project navigator" et sous l'écran general -> depoyment info, vérifiez que la propriété interface principale est correctement configurée!

enter image description here

36
Chris

Je suis un débutant dans le développement d'applications iOS. Je pratiquais depuis le début à développer des applications iOS et lors de l’exécution d’une application très basique Hello World, j’ai également été confronté au fait que seul un écran noir et blanc apparaît après la construction et l’exécution de l’application dans un simulateur iOS .. trouver une solution au problème J'ai accidentellement cliqué sur Fenêtre -> Échelle -> 50% dans un simulateur iOS et le problème a été résolu… .. Je pouvais alors voir la page d'accueil avec mon application et cliquer sur l'icône de l'application j'étais capable de faire fonctionner mon application avec succès . Versions de l'application: Xcode 5.1 Simulateur iOS: 7.1 OSX: 10.9.3

8
asdf

Une autre solution est que si vous construisez une interface utilisateur par programme dans un projet Objective C, vous devrez peut-être ajouter du code pour gonfler la vue. Vous devrez donc ajouter ces 3 lignes pour que l'interface de la fenêtre interagisse avec le code interagissent réellement avec le code et l’autre changera l’écran en blanc afin que vous sachiez que cela fonctionne).

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

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;
}
5
sivi

Cela pourrait être dû à la non définition des informations de déploiement correctes. (c'est-à-dire si votre storyboard n'est pas défini comme interface principale)

4
Eric Hou

Solution 1: Vous pouvez Quit simulator et réessayer.

Solution 2 (Recommandé): Allez à iOS Simulator -> Reset Content and Settings...

 Step 1

Cela fera apparaître une alerte indiquant 'Are you sure you want to reset the iOS Simulator content and settings?'

 Step 2

Sélectionnez Reset si vous souhaitez ou le bouton Don't Reset.

Notez qu'une fois le contenu du simulateur réinitialisé, toutes les applications installées sur le simulateur seront supprimées et les paramètres initiaux seront réinitialisés.

3
Jayprakash Dubey

Si vous utilisez SwiftUI

Si vous mettez à jour une version précédente de Xcode 11, quelques modifications ont été apportées à l'initialisation SceneDelegatewillConnectTo session: options connectionOptions:

Le nom principal window_ est maintenant initialisé à l'aide de UIWindow(windowScene: windowScene), où il était auparavant UIWindow(frame: UIScreen.main.bounds).

Sur la version précédente:

    let window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = UIHostingController(rootView: ContentView())
    self.window = window
    window.makeKeyAndVisible()

Dans la nouvelle version:

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: ContentView())
        self.window = window
        window.makeKeyAndVisible()
    }
3
bauerMusic

Si vous perdez votre point d'entrée dans votre Storyboard ou souhaitez simplement modifier le point d'entrée, vous pouvez le spécifier dans Interface Builder. Pour définir un nouveau point d'entrée, vous devez d'abord déterminer quel ViewController agira en tant que nouveau point d'entrée et, dans l'inspecteur d'attributs, cochez la case Scène initiale.

Vous pouvez essayer: http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/

3
user2101881

Redémarrer votre ordinateur devrait être tout ce que vous devez faire.

1
Lolo

J'ai réussi à trouver le correctif pour cela. Il a été trouvé grâce à ce blog: 

http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/

La solution consiste à appuyer sur cmd + shift +, (commande, shift puis virgule ",") .. pour charger certaines options de libération ou de débogage. 

Modifiez le débogueur de LLDB en GDB. Cela corrige le problème.

0
Matt

vous pouvez aussi aller dans Matériel -> redémarrer, puis Matériel -> Accueil et cliquer sur votre application

0
coder666

Assurez-vous que Initial View Controller est défini 

0
davut dev

Assurez-vous de l'avoir fait si vous obtenez un écran noir après avoir copié le scénarimage d'un autre projet  enter image description here

0
Abhinav Jha

Veuillez vérifier toutes les contraintes pour toutes les vues et revoir le storyboard complet. Cela se produit généralement à cause de cela.

Cordialement, Arora

0
Gaurav Arora

Pour vous assurer qu'il s'agit d'un problème lié au simulateur, voyez si vous pouvez vous connecter au simulateur avec un tout nouveau projet sans modifier le code. Essayez le modèle de barre d’onglet.

Si vous pensez que c'est un problème de simulateur, appuyez sur le menu Simulateur iOS. Sélectionnez "Réinitialiser le contenu et les paramètres ...". Appuyez sur "Réinitialiser".

Je ne vois pas votre XIB ni les propriétés que vous avez connectées dans Interface Builder, mais il se peut également que vous ne chargiez pas votre fenêtre ou que votre fenêtre ne charge pas votre contrôleur de vue.

0
Aaron Brager

J'ai eu le même problème avec Xcode ... un écran noir au lancement des applications, pas de débogage et un clic verrouillerait Xcode. 

J'ai finalement trouvé le problème ... suite à l'impossibilité pour le simulateur de se connecter à Xcode, j'ai jeté un coup d'œil à mon fichier etc/hosts et constaté qu'il y a plusieurs mois, pour résoudre un autre problème, j'avais modifié le fichier Host afin de mapper localhost sur mon IP fixe au lieu de la valeur par défaut ... ma valeur:

10.0.1.17 localhost

Cela devrait fonctionner puisque c'est mon adresse IP, mais que je le remettais à l'Xcode fixe par défaut ...

127.0.0.1 localhost 

J'espère que cela t'aides.

0
Chad Celsius

J'ai résolu ce problème uniquement après avoir supprimé les simulateurs dotés de versions iOS antérieures.

0
Eran Talmor

Je faisais ce que doug suggère ("Réinitialiser le contenu et les paramètres") qui fonctionne mais prend beaucoup de temps et c'est vraiment ennuyeux ... jusqu'à ce que je trouve récemment une solution complètement accidentelle, beaucoup plus rapide et qui semble fonctionner aussi bien! Il suffit d'appuyer sur cmd + L sur votre simulateur ou d'aller dans le menu du simulateur "Matériel -> Verrou" qui verrouille l'écran. Lorsque vous déverrouillez l'écran, l'application fonctionne comme si rien ne s'était passé :)

0
Dimi Dim

Si vous avez récemment mis à jour Xcode 11 beta 3 et essayez d’exécuter un projet SwiftUI plus ancien, vous devez apporter quelques modifications à SceneDelegate où les vues sont chargées. Dans le cas contraire, les écrans resteront noirs sur les appareils exécutant iOS 13 beta 3, ce qui bien sûr. comprend tous les simulateurs.

    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).

    // Use a UIHostingController as window root view controller
    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: ContentView())
        self.window = window
        window.makeKeyAndVisible()
    }
}

Le comportement ne se limite pas strictement aux simulateurs, mais étant donné que la plupart des gens exécuteront un logiciel bêta exclusivement sur des simulateurs, il ne se produira que dans ce contexte. Cela m’a dérouté pendant un bon moment, alors espérons que cela aidera.

0
Andy

Ce qui m'est arrivé, c’est que le type de classe n’était pas UIViewController pour le script attaché à mon contrôleur de vue. C’était pour un UITabController ..... j’avais rapidement créé par erreur le mauvais type de classe .... Assurez-vous donc que la classe correspond au type correct .. J'espère que cela aidera quelqu'un. J'étais pressé et j'ai commis cette erreur.

0
CakeGamesStudios

Il suffit de réinitialiser votre simulateur en cliquant sur Simulateur-> Réinitialiser le contenu et les paramètres.

0
Pravin S.

J'avais des écrans de simulateur noirs uniquement pour iOS 11 sims. Après avoir essayé de réinitialiser, de redémarrer, de réinstaller et de créer un tout nouveau compte utilisateur sur ma machine, j'ai trouvé cette solution:

defaults write com.Apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

trouvé dans cette réponse ici: Le simulateur iOS Xcode 9 devient un écran noir après l’installation de Xcode 10 beta

0
Apoc