95

我无法在 iOS 模拟器中运行我的基本 iPhone 应用程序(同时通过斯坦福 iTunes CS193p 讲座)。

我已经搜索了一段时间(谷歌和 SO),但到目前为止找不到解决方案。有许多类似的错误,但解决方案似乎无法解决此问题。

在 Xcode 中,我单击“运行”。它编译和构建成功,启动 iOS 模拟器,但它永远不会加载应用程序。只有顶部的状态栏。带黑屏。

我只编写了非常基本的代码(在讲座之后)并且无法解决这个问题。

为了让事情更加混乱,我(UIWebView)在这些讲座之前写了一个网络包装器,这很好用。但是代码几乎没有任何区别。我从头开始创建的所有新应用程序都因相同的黑屏问题而失败。

如果我点击模拟器上的主页按钮并启动应用程序,它将显示。但 Xcode 似乎并不知道发生了什么。

就好像 Xcode 失去了与 iOS 模拟器对话的能力并假设它正在运行(即使我退出了 iOS 模拟器)。我尝试退出 Xcode,它要求我停止任务。然后它就挂了。所以我必须强制重启才能退出 Xcode。

我正在使用:OSX 10.8.2 Xcode 4.5.2 iOS 模拟器 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

计算器视图控制器.h

#import <UIKit/UIKit.h>

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

@end

计算器视图控制器.m

#import "CalculatorViewController.h"

@implementation CalculatorViewController

@synthesize display = _display;

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

@end
4

32 回答 32

111

令人惊讶的是,对我有用的是转到 iOS 模拟器菜单,然后按“重置内容和设置”。(在 iOS 13 中,它在硬件下)

于 2013-07-12T15:37:53.670 回答
44

在重置模拟器之前,首先转到您的项目“项目导航器”屏幕并在常规->部署信息屏幕下检查主界面 属性是否正确设置!

在此处输入图像描述

于 2014-01-22T09:16:31.813 回答
17

如果您使用的是 SwiftUI

如果您是从以前版本的 Xcode 11 更新,则SceneDelegate willConnectTo session: options connectionOptions初始化有一些更改:

window现在使用 初始化main UIWindow(windowScene: windowScene),它曾经是UIWindow(frame: UIScreen.main.bounds)

在以前的版本中:

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

在新版本中:

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: ContentView())
        self.window = window
        window.makeKeyAndVisible()
    }
于 2019-07-14T11:06:52.127 回答
9

我是 iOS 应用程序开发的新手。我从一开始就练习开发 iOS 应用程序,在运行一个非常基本的 Hello World 应用程序时,我也遇到了同样的问题,即在 iOS 模拟器中构建和运行应用程序后只出现黑色空白屏幕。不知何故,在努力寻找问题的解决方案时,我不小心在 iOS 模拟器中单击了 Window--> Scale--> 50%,它确实解决了我的问题。然后我可以看到我的应用程序的主页并单击应用程序图标我能够成功运行我的应用程序。应用程序版本:Xcode 5.1 iOS 模拟器:7.1 OSX:10.9.3

于 2014-07-21T09:42:26.400 回答
6

这可能是由于未设置正确的部署信息造成的。(即如果您的故事板未设置为主界面)

于 2013-11-22T14:17:58.430 回答
5

重新启动计算机应该是您需要做的所有事情。

于 2013-02-12T21:09:25.390 回答
5

另一个解决方案是,如果您在 Objective C 项目中以编程方式构建 UI,那么您可能需要添加一些代码来膨胀视图,因此您需要添加这 3 行以使窗口的界面与代码交互(外部 2实际上正在与代码进行交互,而另一个会将屏幕更改为白色,因此您会知道它可以工作)。

- (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;
}
于 2015-08-19T18:32:39.187 回答
5

解决方案1:您可以Quit simulator再试一次。

解决方案 2(推荐):转到iOS Simulator->Reset Content and Settings...

第1步

这将弹出一个警报,说明'Are you sure you want to reset the iOS Simulator content and settings?'

第2步

选择Reset是否愿意或其他Don't Reset按钮。

请注意,一旦您重置模拟器内容,安装在模拟器上的所有应用程序都将被删除,并将重置为初始设置。

于 2015-09-23T06:25:44.490 回答
4

如果您应该在 Storyboard 中放开您的入口点,或者只是想更改入口点,您可以在 Interface Builder 中指定它。要设置新的入口点,您必须首先决定哪个 ViewController 将充当新的入口点,并在 Attribute Inspector 中选择 Initial Scene 复选框。

你可以试试: http ://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/

于 2014-11-12T04:57:38.380 回答
3

我为此挣扎了几个小时。最后为我解决的是:

sudo xcrun simctl erase all

xcrun simctl shutdown all

于 2021-05-05T14:23:20.917 回答
2

如果从另一个项目复制故事板后出现黑屏,请确保您已完成此操作 在此处输入图像描述

于 2018-01-28T03:23:09.430 回答
2

我通过按
cmd++shift清理项目k
并退出我的模拟器并重新构建来解决了这个问题。

于 2021-04-15T07:15:00.353 回答
1

我在 iOS 13 中通过设置窗口背景颜色解决了这个问题:

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
    }
}
于 2020-08-20T18:46:36.840 回答
0

我已经设法找到解决这个问题的方法。它是由这篇博客文章提供的:

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

解决方案是按 cmd+shift+, (command, shift 然后逗号 ",").. 加载一些用于发布或调试的选项。

将调试器从 LLDB 更改为 GDB。这解决了这个问题。

于 2013-02-07T20:48:36.377 回答
0

为确保这是模拟器问题,请查看是否可以在不更改任何代码的情况下使用全新项目连接到模拟器。试试标签栏模板。

如果您认为这是模拟器问题,请按 iOS Simulator 菜单。选择“重置内容和设置...”。按“重置”。

我看不到您的 XIB 以及您在 Interface Builder 中连接的 @properties,但也可能是您没有加载窗口,或者您的窗口没有加载视图控制器。

于 2013-02-07T20:56:13.253 回答
0

我在 Xcode 上遇到了同样的问题......启动应用程序时出现黑屏,没有调试和点击会锁定 Xcode。

我终于找到了问题...在模拟器无法连接到 Xcode 的引导下,我查看了我的 etc/hosts 文件,发现几个月前为了解决另一个问题,我编辑了主机文件以将 localhost 映射到我的固定IP而不是默认IP......我的价值:

10.0.1.17 本地主机

这应该可以工作,因为那是我的 IP,但是将其更改回默认 IP 固定 Xcode ...

127.0.0.1 本地主机

希望这可以帮助。

于 2013-12-23T15:54:02.350 回答
0

我正在按照 doug 的建议(“重置内容和设置”)进行操作,但需要花费很多时间,而且真的很烦人……直到我最近发现完全意外的另一种解决方案,该解决方案速度更快,而且到目前为止似乎也有效!只需在您的模拟器上按 cmd+L 或转到模拟器菜单“硬件 - > 锁定”,它会锁定屏幕,当您解锁屏幕时,应用程序就像什么都没发生过一样工作 :)

于 2014-02-13T16:40:41.470 回答
0

我发生的事情是类的类型不是 UIViewController 附加到我的视图控制器的脚本。它是针对 UITabController 的.....我错误地快速创建了错误类型的类....所以请确保该类是否是正确的类型..希望这对某人有所帮助。我很着急,犯了这个错误。

于 2016-03-30T04:27:27.680 回答
0

只需单击 Simulator-> Reset Contents and Settings 即可重置您的模拟器。

于 2016-12-08T10:20:07.000 回答
0

你也可以去硬件->重启,然后硬件->主页,然后点击你的应用程序

于 2017-10-08T01:58:35.520 回答
0

确保设置了初始视图控制器

于 2018-06-06T22:03:44.857 回答
0

我只有在删除具有早期 iOS 版本的模拟器后才解决了这个问题。

于 2018-06-26T08:17:29.790 回答
0

我只有 iOS 11 sims 的黑色模拟器屏幕。在尝试重置、重启、重新安装并在我的机器上创建一个全新的用户帐户后,我找到了这个解决方案:

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

在此答案中找到:安装 Xcode 10 beta 后 Xcode 9 iOS 模拟器变成黑屏

于 2018-08-28T20:31:16.223 回答
0

请检查所有视图的所有约束并查看完整的故事板。通常这是因为这个而发生的。

问候, 阿罗拉

于 2019-01-22T07:54:00.560 回答
0

如果您最近更新到 Xcode 11 beta 3 并尝试运行较旧的 SwiftUI 项目,则必须在加载视图的 SceneDelegate 中进行一些更改,否则在运行 iOS 13 beta 3 的设备上屏幕将保持黑色,这当然包括所有模拟器。

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

该行为并不严格限于模拟器,但由于大多数人将专门在模拟器上运行 beta 软件,因此它只会在这种情况下发生。困扰了我好久,希望对你有帮助。

于 2019-07-10T09:26:55.560 回答
0

当我在 Xcode 11.1 上进行项目时,我遇到了这个问题。该黑屏问题可能会出现在 ViewController 之间的任何演示文稿中。

这个 答案对我有帮助。因为模式显示随着 iOS 13 的变化而改变。 如果你在 iOS 13 之前没有遇到这个问题,请尝试在你的 ViewController 显示之前添加下面的行;

viewController.modalPresentationStyle = .fullScreen

在您的代码可能如下所示之后;

let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen //or .overFullScreen for transparency
self.present(vc, animated: true, completion: nil)
于 2019-10-18T14:17:44.523 回答
0

我正在使用 android studio 开发颤振并运行模拟器,模拟器很暗,我根据接受的答案重置了内容。但这并没有解决我的问题。我的 CPU 以某种方式运行得足够高,所以我重新启动了,但没有解决问题。我打开 Xcode 并运行我的原生 iOS 应用程序之一,模拟器像往常一样重新打开。我关闭了 Xcode 并打开了 Android Studio,然后再次开始开发 Flutter 应用程序。

于 2020-08-07T17:23:23.570 回答
0

在此处输入图像描述

这就是我遇到这个问题的原因。

出于某种原因,未选中“是初始视图控制器”(对于我的主视图控制器),这导致加载时出现黑屏。

希望这可以帮助那里的人!

于 2020-08-14T04:54:53.843 回答
0

我注意到我不小心var window:UIWindow?从 AppDelegate 中删除了行。再次介绍它为我解决了这个问题!

于 2021-01-11T20:45:02.783 回答
0

对我来说,只需摇动设备(Device > Shake)。奇怪但为我工作。如果这不起作用,请尝试重置 ( Device > Erase All Content and Settings),然后再次摇动设备。

于 2021-06-03T09:12:05.773 回答
0

在 Macbook Air 进入睡眠状态后,2021 年 12 月使用 iOS 13.7 模拟器遇到了这个问题。模拟器屏幕是黑色的,没有生命迹象。重置模拟器没有帮助。关闭所有窗口并重新启动笔记本电脑并没有帮助。最终,它syspolicyd占用了 350% 的 CPU。杀死这个进程解决了这个问题。

于 2021-12-23T04:51:41.200 回答
0

对我来说,崩溃的模拟器是带有 iOS 15.2 的 iPhone 13。没有一个解决方案奏效。

每当出现此问题时,进程“syspolicyd”的 CPU 使用率也会上升,但终止该进程也无济于事。

将设备更改为其他设备(文件 > 打开模拟器 > iOS 15.2 > iPhone 13 Pro Max)解决了该问题。之后,我再次启动了之前的设备(iPhone 13),它也可以正常工作。

于 2022-01-27T18:57:44.333 回答