Starten Sie den iOS-Simulator über Xcode und erhalten Sie einen schwarzen Bildschirm, gefolgt von Xcode, der hängt und Aufgaben nicht stoppen kann


83

Ich habe Probleme beim Ausführen meiner grundlegenden iPhone-Anwendung (während ich die Vorlesungen zu Stanford iTunes CS193p durchlaufe) im iOS-Simulator.

Ich habe eine Weile gesucht (sowohl Google als auch SO), konnte aber bisher keine Lösung finden. Es gibt viele ähnliche Fehler, aber die Lösungen scheinen dies nicht zu beheben.

In Xcode klicke ich auf "Ausführen". Es wird erfolgreich kompiliert und erstellt, startet den iOS-Simulator, kann die App jedoch nie laden. Nur die Statusleiste oben. Mit einem schwarzen Bildschirm.

Ich habe nur sehr einfachen Code geschrieben (zusammen mit den Vorlesungen) und kann dieses Problem nicht überwinden.

Um die Sache noch mehr zu verwirren, habe ich (UIWebView)vor diesen Vorträgen einen Web-Wrapper geschrieben, der gut funktioniert. Aber es gibt kaum einen Unterschied im Code. Alle neuen Apps, die ich von Grund auf neu erstelle, schlagen mit demselben Problem mit dem schwarzen Bildschirm fehl.

Wenn ich die Home-Taste im Simulator drücke und die App starte, wird sie angezeigt. Aber Xcode scheint nicht zu wissen, was los ist.

Es ist, als ob Xcode die Fähigkeit verloren hat, mit iOS Simulator zu kommunizieren, und davon ausgeht, dass es ausgeführt wird (selbst wenn ich iOS Simulator beende). Ich versuche, Xcode zu beenden, und ich werde aufgefordert, die Aufgaben zu beenden. Dann hängt es einfach. Also muss ich einen Neustart erzwingen, um Xcode zu verlassen.

Ich verwende: 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

1
Ich bekomme das manchmal. Es hat nichts mit Projektcode zu tun und ist ein Fehler oder ein Problem mit XCode. Dies geschah auch in früheren Versionen (XCode 4.x). Keine Lösung, als das Beenden zu erzwingen.
Frühling

1
Ja, ich erzwinge das Beenden, starte meinen Computer neu und starte dann Xcode. Vielleicht möchten Sie auch die "Abgeleiteten Daten" im Xcode-Organizer (Projektabschnitt)
löschen

2
Wenn Ihr Simulator nicht auf Ihren Bildschirm passt, wird möglicherweise das Ende einer einfachen Tutorial-App mit weißem Hintergrund angezeigt. Durch Scrollen, Drehen oder Skalieren des Fensters (Befehl + 3) können Sie dies herausfinden. Dies ist für einen Anfänger möglicherweise nicht offensichtlich und kann daher jemandem helfen.
DiegoG

Antworten:


90

Überraschenderweise funktionierte es für mich, zum iOS Simulator-Menü zu gehen und auf "Inhalt und Einstellungen zurücksetzen" zu klicken. (in iOS 13 unter Hardware)


11
Jep, das hat den Trick für mich getan! Für diejenigen unter Ihnen, die diese Option nicht finden konnten: Starten Sie den Simulator und wählen Sie dann in der Menüleiste (oben auf dem Bildschirm) iOS-Simulator -> Reset Content and Settings.
Timo

9
Hat mir nicht helfen überhaupt: ((
Mimik

1
@daylight Danke für deinen Kommentar. Ich habe festgestellt, dass dieses Problem nur für ein bestimmtes Projekt besteht, und da dieses Projekt nur zu Testzwecken erstellt wurde, ist mir das egal.
imitieren

1
@mimic versuchen zu laufenxcrun simctl shutdown all
Rish

1
Diese Einstellung befindet sich jetzt in der Menüleiste "Gerät"
izhang05

42

Bevor Sie den Emulator zurücksetzen, rufen Sie zunächst den Bildschirm " Projektnavigator " Ihres Projekts auf und überprüfen Sie unter dem Bildschirm " Allgemein -> Bereitstellungsinformationen" , ob die Eigenschaft der Hauptschnittstelle ordnungsgemäß eingerichtet ist.

Geben Sie hier die Bildbeschreibung ein


Das hat bei mir funktioniert! Obwohl mein Problem auf dem Gerät war. Nach dem Startbild wird es nur mit einer Statusleiste schwarz. Nicht einmal das Erreichen von applicationDidLaunchWithOptions im appDelegate.
SleepNot

Ich bin ziemlich neu bei ios, um ehrlich zu sein, aber es hört sich so an, als würde Ihre App beim Start eine Ausnahme auslösen. Hat es im Emulator richtig funktioniert? Sie können versuchen, es über den Emulator auszuführen und sich Ihr Protokoll anzusehen. Dies sollte Ihnen einen Hinweis darauf geben, was die Ausnahme ist, wenn dies der Fall ist
Chris

Nein, jetzt ist es okay. Es wurde keine Ausnahme ausgegeben, ich habe sogar versucht, mich zu protokollieren. Ihre Antwort hat es für mich gelöst.
SleepNot

Ähnliches Problem hier. Im nächsten Abschnitt "App-Symbole und Startbilder" wurde die "Startbildschirmdatei" nicht festgelegt. Einmal eingestellt hatte ich wieder meine Benutzeroberfläche.
Zauberer von Kneup

Ich habe mein Haupt-Storyboard gelöscht und erneut hinzugefügt, wodurch die Projekteinstellung "Hauptschnittstelle" leer war. Tausend Dank! Es hat mein Rätsel gelöst.
Michelle

15

Wenn Sie SwiftUI verwenden

Wenn Sie von einer früheren Version von Xcode 11 aktualisieren, gibt es einige Änderungen an der SceneDelegate willConnectTo session: options connectionOptionsInitialisierung:

Das Main windowwird jetzt mit initialisiert UIWindow(windowScene: windowScene), wo es früher warUIWindow(frame: UIScreen.main.bounds)

In der vorherigen Version:

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

In neuer Version:

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

1
Vielen Dank, da dies eine relativ neue Technologie ist. Diese Antwort zu finden war ein bisschen herausfordernd, es war die Antwort auf meine Lösung!
Yuliani Noriega

Vielen Dank, ich habe alles versucht. Dies ist keine so offensichtliche Lösung, dass ich Ihnen danke, dass Sie sie geteilt haben.
Nalov

9

Ich bin ein Neuling in der iOS-App-Entwicklung. Ich habe von Anfang an geübt, iOS-Apps zu entwickeln, und während ich eine sehr einfache Hello World-App ausführte, hatte ich auch das gleiche Problem, dass nach dem Erstellen und Ausführen der App im iOS-Simulator nur ein schwarzer leerer Bildschirm angezeigt wird. Während ich mich bemühte, eine Lösung für das Problem zu finden, klickte ich versehentlich im iOS-Simulator auf Fenster -> Skalieren -> 50% und es löste mein Problem. Ich konnte dann die Startseite mit meiner App sehen und durch Klicken auf das App-Symbol konnte ich meine App erfolgreich ausführen. App-Versionen: Xcode 5.1 iOS Simulator: 7.1 OSX: 10.9.3


6

Dies kann darauf zurückzuführen sein, dass nicht die richtigen Bereitstellungsinformationen festgelegt wurden. (dh wenn Ihr Storyboard nicht als Hauptschnittstelle festgelegt ist)


Endlich wurde mir klar, dass ich mir ansah, LaunchScreen.storyboard wann ich hätte arbeiten sollen Main.storyboard. Sobald ich das herausgefunden habe, erscheint der Bildschirm mit Inhalt. Vielen Dank für den Hinweis hier
Gene Bo

5

Lösung 1: Sie können Quit simulatores erneut versuchen.

Lösung 2 (empfohlen): Gehen Sie zu iOS Simulator->Reset Content and Settings...

Schritt 1

Daraufhin wird eine Warnmeldung angezeigt 'Are you sure you want to reset the iOS Simulator content and settings?'

Schritt 2

Wählen ResetSie, ob Sie möchten oder sonst die Don't ResetSchaltfläche.

Beachten Sie, dass nach dem Zurücksetzen des Simulatorinhalts alle auf dem Simulator installierten Apps gelöscht und auf die ursprünglichen Einstellungen zurückgesetzt werden.


5

Eine andere Lösung besteht darin, dass Sie beim programmgesteuerten Erstellen der Benutzeroberfläche in Objective C-Projekt möglicherweise Code hinzufügen müssen, um die Ansicht aufzublähen. Daher müssen Sie diese drei Zeilen hinzufügen, damit die Benutzeroberfläche des Fensters mit dem Code interagiert (die äußere 2) interagieren tatsächlich mit dem Code und der andere ändert den Bildschirm in Weiß, damit Sie wissen, dass er funktioniert).

- (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;
}

4

Ein Neustart Ihres Computers sollte alles sein, was Sie tun müssen.


manchmal funktioniert das einfache Zeug, löste meinen iPad App schwarzen Bildschirm
Anton - Hexagons

4

Wenn Sie Ihren Einstiegspunkt in Ihrem Storyboard verlieren oder einfach den Einstiegspunkt ändern möchten, können Sie dies im Interface Builder angeben. Um einen neuen Einstiegspunkt festzulegen, müssen Sie zunächst entscheiden, welcher ViewController als neuer Einstiegspunkt fungieren soll, und im Attributinspektor das Kontrollkästchen Erste Szene aktivieren.

Sie können versuchen: http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/


1

Stellen Sie sicher, dass Sie dies getan haben, wenn nach dem Kopieren des Storyboards aus einem anderen Projekt ein schwarzer Bildschirm angezeigt wird Geben Sie hier die Bildbeschreibung ein


0

Ich habe es geschafft, die Lösung dafür zu finden. Es wurde mit freundlicher Genehmigung dieses Blog-Beitrags gefunden:

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

Die Lösung besteht darin, cmd + shift + (Befehl, Umschalttaste und dann Komma ",") zu drücken, um einige Optionen zum Freigeben oder Debuggen zu laden.

Ändern Sie den Debugger von LLDB in GDB. Dies behebt das Problem.


1
Der GDB-Debugger ist veraltet und Xcode 4.6 ist die letzte Version, die ihn unterstützt. developer.apple.com/library/mac/#releasenotes/DeveloperTools/…
Aaron Brager

0

Um sicherzustellen, dass es sich um ein Simulatorproblem handelt, prüfen Sie, ob Sie mit einem brandneuen Projekt eine Verbindung zum Simulator herstellen können, ohne Code zu ändern. Probieren Sie die Vorlage für die Registerkartenleiste aus.

Wenn Sie glauben, dass es sich um ein Simulatorproblem handelt, klicken Sie auf das Menü iOS-Simulator. Wählen Sie "Inhalt und Einstellungen zurücksetzen ...". Drücken Sie "Zurücksetzen".

Ich kann Ihr XIB und die @ Eigenschaften, die Sie in Interface Builder verbunden haben, nicht sehen, aber es kann auch sein, dass Sie Ihr Fenster nicht laden oder dass Ihr Fenster Ihren View Controller nicht lädt.


Hallo Aaron, danke für die Antwort. Ich habe versucht, nur ein leeres Projekt zu laden (Registerkartenleiste und auch leere Anwendung). Es hat das gleiche Problem. Bei Verwendung des LLDB-Debuggers schlägt dies jedes Mal fehl . Wenn ich es auf GDB umstelle, funktioniert es einwandfrei. Ich habe Ihren Kommentar unten zu meiner Antwort gesehen, dass er nach 4.6 veraltet ist. Ich hoffe nur, dass etwas funktioniert, wenn diese Zeit kommt, denn es scheint das Hauptproblem zu sein.
Matt

0

Ich hatte das gleiche Problem mit Xcode ... schwarzer Bildschirm beim Starten von Apps, kein Debuggen und Klicken würde Xcode blockieren.

Ich habe endlich das Problem gefunden ... Nachdem ich festgestellt hatte, dass der Simulator keine Verbindung zu Xcode herstellen konnte, habe ich mir meine etc / hosts-Datei angesehen und vor Monaten festgestellt, dass ich die Host-Datei bearbeitet habe, um localhost meinem zuzuordnen, um ein anderes Problem zu lösen feste IP anstelle der Standardeinstellung ... mein Wert:

10.0.1.17 localhost

Dies sollte funktionieren, da dies meine IP ist, aber sie wieder auf den Standard-IP-festen Xcode ändern ...

127.0.0.1 localhost

Hoffe das hilft.


0

Ich habe getan, was Doug vorschlägt ("Inhalt und Einstellungen zurücksetzen"), was funktioniert, aber viel Zeit in Anspruch nimmt und wirklich ärgerlich ist ... bis ich kürzlich völlig zufällig eine andere Lösung gefunden habe, die viel schneller ist und auch bisher zu funktionieren scheint! Drücken Sie einfach cmd + L auf Ihrem Simulator oder gehen Sie zum Simulator-Menü "Hardware -> Sperren", das den Bildschirm sperrt. Wenn Sie den Bildschirm entsperren, funktioniert die App so, als wäre nie etwas passiert :)


0

Was mit mir passiert ist, war, dass der Klassentyp nicht UIViewController für das an meinen View Controller angehängte Skript war. Es war für einen UITabController ..... Ich hatte fälschlicherweise schnell den falschen Klassentyp erstellt .... Stellen Sie also sicher, dass die Klasse den richtigen Typ hat .. Hoffe, das hilft jemandem. Ich war in Eile und habe diesen Fehler gemacht.


0

Setzen Sie einfach Ihren Simulator zurück, indem Sie auf Simulator-> Inhalt und Einstellungen zurücksetzen klicken.


0

Sie können auch zu Hardware -> Neustart, dann Hardware -> Start gehen und auf Ihre App klicken


0

Stellen Sie sicher, dass Initial View Controller eingestellt ist


0

Ich habe dies erst gelöst, nachdem ich Simulatoren mit früheren iOS-Versionen entfernt hatte.


0

Ich hatte schwarze Simulatorbildschirme nur für iOS 11-Sims. Nachdem ich versucht hatte, ein brandneues Benutzerkonto auf meinem Computer zurückzusetzen, neu zu starten, neu zu installieren und zu erstellen, fand ich folgende Lösung:

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

In dieser Antwort finden Sie hier: Xcode 9 iOS Simulator wird nach der Installation von Xcode 10 Beta schwarz


0

Bitte überprüfen Sie alle Einschränkungen für alle Ansichten und überprüfen Sie das vollständige Storyboard. Normalerweise passiert das deshalb.

Grüße, Arora


0

Falls Sie kürzlich auf Xcode 11 Beta 3 aktualisiert haben und versuchen, ein älteres SwiftUI-Projekt auszuführen, müssen Sie einige Änderungen im SceneDelegate vornehmen, in das die Ansichten geladen werden. Andernfalls bleiben die Bildschirme auf Geräten mit iOS 13 Beta 3 schwarz, was natürlich der Fall ist Beinhaltet alle Simulatoren.

    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()
    }
}

Das Verhalten ist nicht streng auf die Simulatoren beschränkt, aber da die meisten Benutzer Beta-Software ausschließlich auf Simulatoren ausführen, tritt es nur in diesem Zusammenhang auf. Es hat mich eine ganze Weile verwirrt, also hoffe es hilft.


0

Wenn ich mein Projekt auf Xcode 11.1 ausgeführt habe, habe ich dieses Problem. Dieses Problem mit dem schwarzen Bildschirm kann bei Präsentationen zwischen ViewControllern auftreten.

Diese Antwort hat mir geholfen. Da sich die modale Präsentation mit iOS 13 geändert hat. Wenn Sie dieses Problem nicht vor iOS 13 haben, versuchen Sie, Ihrem ViewController vor der Präsentation eine Zeile darunter hinzuzufügen.

viewController.modalPresentationStyle = .fullScreen

nachdem Ihr Code wie folgt aussehen mag;

let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen //or .overFullScreen for transparency
self.present(vc, animated: true, completion: nil)

0

Ich habe mit Android Studio ein Flattern entwickelt und den Simulator ausgeführt. Der Simulator war dunkel und ich habe den Inhalt gemäß der akzeptierten Antwort zurückgesetzt. Aber das hat mein Problem nicht behoben. Meine CPU lief irgendwie hoch genug, also habe ich neu gestartet, aber das Problem nicht behoben. Ich habe Xcode geöffnet und eine meiner nativen iOS-Apps ausgeführt. Der Simulator wurde wie gewohnt neu geöffnet. Ich schloss den Xcode und öffnete Android Studio. Dann begann ich erneut mit der Entwicklung der Flatter-App.


0

Geben Sie hier die Bildbeschreibung ein

Dies war mein Grund für dieses Problem.

Aus irgendeinem Grund wurde "Ist der anfängliche Ansichts-Controller" (für meinen Haupt-Ansichts-Controller) deaktiviert, was dazu führte, dass der schwarze Bildschirm beim Laden angezeigt wurde.

Hoffe das hilft jemandem da draußen!


0

Ich habe diese Frage mit der festgelegten Hintergrundfarbe des Fensters in iOS 13 gelöst:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let _ = (scene as? UIWindowScene) else { return }
    if let windowScene = scene as? UIWindowScene {
        window = UIWindow(windowScene: windowScene)
        window?.backgroundColor = .white
        let storyBoard = UIStoryboard(name: "Main", bundle: nil)
        
        // workaround for svprogresshud
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.window = window
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.