web-dev-qa-db-ja.com

XcodeからiOSシミュレーターを起動して黒い画面を表示し、Xcodeがハングしてタスクを停止できない

IOSシミュレーターで基本的なiPhoneアプリケーションを実行するのに問題があります(スタンフォードのiTunes CS193pの講義中)。

私はしばらく(GoogleとSOの両方)を探していましたが、これまでのところ解決策を見つけることができませんでした。多くの同様のバグがありますが、解決策はこれを修正していないようです。

Xcodeで「実行」をクリックします。コンパイルとビルドに成功し、iOSシミュレーターを起動しますが、アプリをロードすることはできません。上部のステータスバーのみ。黒い画面で。

私は非常に基本的なコードを書いただけで(講義に従って)、この問題を乗り越えることはできません。

問題をさらに混乱させるために、これらの講義の前にWebラッパー(UIWebView)を作成しましたが、これは正常に機能します。しかし、コードにほとんど違いはありません。最初から作成したすべての新しいアプリはすべて、同じ黒い画面の問題で失敗します。

シミュレーターのホームボタンを押してアプリを起動すると、アプリが表示されます。しかし、Xcodeは何が起こっているのかを知らないようです。

これは、XcodeがiOSシミュレーターと通信する機能を失い、(iOSシミュレーターを終了しても)実行中であると想定しているようです。 Xcodeを終了しようとすると、タスクを停止するように求められます。その後、ハングします。そのため、Xcodeから抜け出すには強制的に再起動する必要があります。

私は使用しています: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
71
Matt

驚いたことに、私のために働いたのは、iOSシミュレーターメニューに移動し、[コンテンツと設定をリセット]を押すことでした。 (iOS 13では、ハードウェアの下)

76
doug

エミュレータをリセットする前に、まずプロジェクト「project navigator」画面に移動し、general->depoyment info画面で、メインインターフェイスプロパティが適切に設定されていることを確認してください!

enter image description here

39
Chris

私はiOSアプリ開発の初心者です。私は最初からiOSアプリの開発を練習していましたが、非常に基本的なHello Worldアプリを実行しているときに、iOSシミュレーターでアプリをビルドして実行すると黒い空白の画面しか表示されないという同じ問題に直面しました。どういうわけか、問題の解決策を見つけるのに苦労しながら、誤ってiOSシミュレータで[ウィンドウ]-> [スケール]-> [50%]をクリックすると、問題が解決しました。その後、アプリのあるホームページが表示され、アプリのアイコンをクリックすると、アプリを正常に実行できました。アプリのバージョン:Xcode 5.1 iOS Simulator:7.1 OSX:10.9.3

8
asdf

別の解決策は、Objective CプロジェクトでUIをプログラムで構築する場合、ビューを膨張させるためにいくつかのコードを追加する必要がある可能性があるため、これらの3行を追加してウィンドウのインターフェイスがコードと相互作用するようにする必要があります(外側2実際にコードとやり取りしており、もう1つは画面を白に変更するため、動作することがわかります)。

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

ソリューション1:Quit simulatorを実行して、再試行できます。

ソリューション2(推奨):iOS Simulator-> Reset Content and Settings...に移動します

Step 1

これにより、'Are you sure you want to reset the iOS Simulator content and settings?'を示すアラートがポップアップ表示されます

Step 2

希望する場合はResetを選択するか、Don't Resetボタンを選択します。

シミュレーターのコンテンツをリセットすると、シミュレーターにインストールされているすべてのアプリが削除され、初期設定にリセットされることに注意してください。

4

これは、正しい展開情報を設定していないことが原因である可能性があります。 (つまり、ストーリーボードがメインインターフェイスとして設定されていない場合)

4
Eric Hou

ストーリーボードでエントリポイントを失う必要がある場合、または単にエントリポイントを変更する場合は、Interface Builderでこれを指定できます。新しいエントリポイントを設定するには、まず、どのViewControllerが新しいエントリポイントとして機能するかを決定し、属性インスペクタで[初期シーン]チェックボックスを選択する必要があります。

あなたは試すことができます: http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/

3
user2101881

コンピューターを再起動するだけで十分です。

2
Lolo

これに対する修正を見つけることができました。このブログ投稿のおかげで見つかりました:

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

解決策は、cmd + shift +、(command、shift、次にカンマ「、」)を押すことです。これにより、リリースまたはデバッグ用のオプションがロードされます。

デバッガーをLLDBからGDBに変更します。これにより問題が修正されます。

0
Matt

[ハードウェア]-> [再起動]、[ハードウェア]-> [ホーム]の順にクリックして、アプリをクリックすることもできます。

0
coder666

初期View Controllerが設定されていることを確認してください

0
davut dev

別のプロジェクトからストーリーボードをコピーした後に黒い画面が表示される場合は、これを行ったことを確認してください enter image description here

0
Abhinav Jha

すべてのビューのすべての制約を確認し、ストーリーボード全体を確認してください。通常、これはそのために起こります。

よろしく、アローラ

0
Gaurav Arora

シミュレータの問題であることを確認するには、コードを変更せずに新しいプロジェクトでシミュレータに接続できるかどうかを確認してください。タブバーテンプレートを試してください。

シミュレーターの問題だと思われる場合は、iOSシミュレーターメニューを押します。 「コンテンツと設定をリセット...」を選択します。 [リセット]を押し​​ます。

Interface BuilderでXIBと接続されている@propertiesを確認できませんが、ウィンドウをロードしていないか、ウィンドウがView Controllerをロードしていない可能性もあります。

0
Aaron Brager

Xcodeでも同じ問題が発生しました。アプリの起動時に黒い画面が表示され、デバッグもクリックもXcodeをロックしませんでした。

私はついに問題を見つけました...シミュレータがXcodeに接続できなかったというリードに続いて、etc/hostsファイルを見て、その数ヶ月前にホストファイルを編集してローカルホストをマップする別の問題を解決することを見つけましたデフォルトの代わりに固定IP ...私の値:

10.0.1.17 localhost

これは私のIPなので動作するはずですが、デフォルトのIP固定Xcodeに戻すと...

127.0.0.1 localhost

お役に立てれば。

0
Chad Celsius

これは、以前のiOSバージョンのシミュレーターを削除して初めて解決しました。

0
Eran Talmor

ダグが提案する内容(「コンテンツと設定のリセット」)を実行していましたが、かなり時間がかかり、非常に面倒です...最近、はるかに高速でこれまでのところ機能している別のソリューションを完全に偶然見つけました!シミュレータでcmd + Lを押すか、画面をロックするシミュレータメニュー「ハードウェア->ロック」に移動します。画面のロックを解除すると、アプリは何も起こらなかったように動作します:)

0
Dimi Dim

最近Xcode 11ベータ3に更新して古いSwiftUIプロジェクトを実行しようとする場合、ビューがロードされるSceneDelegateでいくつかの変更を行う必要があります。すべてのシミュレータが含まれます。

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

動作は厳密にシミュレータに限定されませんが、ほとんどの人はベータソフトウェアをシミュレータでのみ実行するため、このコンテキストでのみ発生します。それはかなり長い間私を困惑させたので、それが役立つことを願っています。

0
Andy

私に起こったことは、View ControllerにアタッチされたスクリプトのクラスのタイプがUIViewControllerではなかったことです。 UITabController用でした.....間違ったタイプのクラスを間違えてすばやく作成していました。私は急いでいて、この間違いを犯しました。

0

[シミュレータ]-> [内容と設定をリセット]をクリックして、シミュレータをリセットします。

0
Pravin S.

IOS 11シム専用の黒いシミュレーター画面がありました。リセット、再起動、再インストール、および新しいユーザーアカウントの作成をマシンに試みた後、このソリューションを見つけました。

defaults write com.Apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

ここのこの答えにあります: Xcode 9ベータ版のインストール後にXcode 9 iOSシミュレータが黒い画面になります

0
Apoc