Khởi chạy trình mô phỏng iOS từ Xcode và nhận được màn hình đen, sau đó là Xcode bị treo và không thể dừng tác vụ


83

Tôi đang gặp sự cố khi chạy ứng dụng iPhone cơ bản của mình (trong khi xem qua các bài giảng của Stanford iTunes CS193p) trong trình mô phỏng iOS.

Tôi đã tìm kiếm trong một thời gian (cả Google và SO), nhưng không thể tìm thấy giải pháp cho đến nay. Có nhiều lỗi tương tự, nhưng các giải pháp dường như không khắc phục được điều này.

Trong Xcode, tôi nhấp vào "chạy". Nó biên dịch và xây dựng thành công, khởi chạy trình mô phỏng iOS nhưng nó không bao giờ tải được ứng dụng. Chỉ thanh trạng thái ở trên cùng. Với một màn hình đen.

Tôi chỉ viết mã rất cơ bản (sau cùng với các bài giảng) và không thể vượt qua vấn đề này.

Để làm rối thêm vấn đề, tôi đã viết một trình bao bọc web (UIWebView)trước những bài giảng này và điều này hoạt động tốt. Nhưng hầu như không có bất kỳ sự khác biệt nào trong mã. Tất cả các ứng dụng mới mà tôi tạo từ đầu đều không thành công với cùng một vấn đề màn hình đen.

Nếu tôi nhấn nút trang chủ trên trình mô phỏng và khởi chạy ứng dụng, nó sẽ hiển thị. Nhưng Xcode dường như không biết chuyện gì đang xảy ra.

Nó như thể Xcode đã mất khả năng nói chuyện với Trình mô phỏng iOS và giả định rằng nó đang chạy (ngay cả khi tôi thoát trình mô phỏng iOS). Tôi thử và thoát khỏi Xcode và nó yêu cầu tôi dừng các tác vụ. Sau đó, nó chỉ bị treo. Vì vậy, tôi phải buộc khởi động lại để thoát khỏi Xcode.

Tôi đang sử dụng: OSX 10.8.2 Xcode 4.5.2 iOS Simulator 6.0

Máy tínhAppDelegate.h

#import <UIKit/UIKit.h>

@interface CalculatorAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

Máy tínhAppDelegate.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
Tôi đôi khi nhận được điều này. Nó hoàn toàn không liên quan đến mã dự án và là một số lỗi hoặc sự cố với XCode. Nó cũng đã xảy ra trong các phiên bản trước đó (XCode 4.x). Không có giải pháp nào khác ngoài việc buộc thôi việc.
mùa xuân

1
Đúng, tôi buộc thoát, khởi động lại máy tính của mình, sau đó khởi động Xcode. Ngoài ra, bạn có thể muốn xóa "Dữ liệu có nguồn gốc" trong trình tổ chức Xcode (phần dự án)
MCKapur

2
Nếu trình mô phỏng của bạn không phù hợp với màn hình của bạn, bạn có thể thấy phần dưới của ứng dụng hướng dẫn cơ bản có nền trắng. Bằng cách cuộn, xoay hoặc mở rộng cửa sổ (lệnh + 3), bạn có thể tìm ra. Điều này có thể không rõ ràng đối với người mới bắt đầu, vì vậy nó có thể giúp ích cho ai đó.
DiegoG

Câu trả lời:


90

Đáng ngạc nhiên, những gì làm việc cho tôi là chuyển đến menu Trình mô phỏng iOS và nhấn "Đặt lại nội dung và cài đặt". (trong iOS 13, trong Phần cứng)


11
Jep, đó là mẹo cho tôi! Đối với những người bạn không thể tìm thấy tùy chọn đó: Khởi động trình mô phỏng và sau đó chọn trong thanh menu (trên cùng của màn hình) iOS-Simulator -> Reset Content and Settings.
Timo

9
Không giúp được gì cho tôi: ((
bắt chước

1
@daylight Cảm ơn bình luận của bạn. Tôi lưu ý rằng vấn đề này chỉ tồn tại đối với một dự án cụ thể và vì dự án này đã được tạo chỉ cho mục đích thử nghiệm nên tôi không quan tâm lắm.
bắt chước

1
@mimic thử chạyxcrun simctl shutdown all
Rish

1
Cài đặt này hiện nằm trong thanh menu "Thiết bị"
izhang05

42

Trước khi đặt lại trình giả lập, đầu tiên hãy chuyển đến màn hình " trình điều hướng dự án " của bạn và trong màn hình thông tin chung -> kiểm tra xem thuộc tính giao diện chính đã được thiết lập đúng chưa!

nhập mô tả hình ảnh ở đây


Điều này đã làm việc cho tôi! Mặc dù vấn đề của tôi là trên thiết bị. Sau khi hình ảnh khởi chạy, nó chỉ chuyển sang màu đen với một thanh trạng thái. Thậm chí không đến được applicationDidLaunchWithOptions tại appDelegate.
SleepNot

Thành thật mà nói, tôi còn khá mới đối với ios, nhưng có vẻ như ứng dụng của bạn đang có một ngoại lệ khi khởi động. Nó có hoạt động chính xác trong trình giả lập không? Bạn có thể thử chạy nó thông qua giả lập và có một cái nhìn tại đăng nhập của bạn, điều này sẽ cung cấp cho bạn một số dấu hiệu cho thấy những gì các ngoại lệ là nếu nó là trường hợp
Chris

Không, không sao cả. Không xuất ra bất kỳ ngoại lệ nào, tôi thậm chí đã thử ghi nhật ký. Câu trả lời của bạn đã giải quyết nó cho tôi.
SleepNot

Vấn đề tương tự ở đây. Trong phần tiếp theo "Biểu tượng ứng dụng và hình ảnh khởi chạy", "Tệp màn hình khởi chạy" không được đặt. Sau khi thiết lập, tôi đã có lại giao diện người dùng của mình.
Wizard of Kneup,

Tôi đã xóa bảng phân cảnh chính của mình và thêm lại nó, điều này khiến cài đặt dự án "Giao diện chính" bị trống. Cảm ơn rất nhiều! Nó đã sửa chữa bí ẩn của tôi.
Michelle

15

Nếu bạn đang sử dụng SwiftUI

Nếu bạn đang cập nhật từ phiên bản trước đó của Xcode 11, có một số thay đổi đối với quá trình SceneDelegate willConnectTo session: options connectionOptionskhởi chạy:

Main windowhiện được khởi tạo bằng cách sử dụng UIWindow(windowScene: windowScene), nơi nó thườngUIWindow(frame: UIScreen.main.bounds)

Trên phiên bản trước:

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

Trong phiên bản mới:

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

1
Cảm ơn bạn rất nhiều, vì đây là một công nghệ tương đối mới. Tìm ra câu trả lời này hơi khó, đó là câu trả lời cho giải pháp của tôi!
Yuliani Noriega

Cảm ơn bạn rất nhiều, tôi đã thử mọi thứ. Đây không phải là giải pháp rõ ràng nên cảm ơn bạn đã chia sẻ nó.
Nalov

9

Tôi là người mới phát triển ứng dụng iOS. Tôi đã thực hành phát triển ứng dụng iOS ngay từ đầu và trong khi chạy một ứng dụng Hello World rất cơ bản, tôi cũng gặp phải vấn đề tương tự là chỉ xuất hiện màn hình trống màu đen sau khi xây dựng và chạy ứng dụng trong trình mô phỏng iOS. Bằng cách nào đó trong khi vật lộn để tìm ra giải pháp cho vấn đề, tôi đã vô tình nhấp vào Window -> Scale -> 50% trong trình mô phỏng iOS và nó đã giải quyết được vấn đề của tôi. Sau đó, tôi có thể thấy Trang chủ có ứng dụng của mình và nhấp vào biểu tượng ứng dụng, tôi đã có thể chạy ứng dụng của mình thành công. Phiên bản ứng dụng: Xcode 5.1 Trình mô phỏng iOS: 7.1 OSX: 10.9.3


6

Điều này có thể do không đặt đúng thông tin triển khai. (tức là nếu bảng phân cảnh của bạn không được đặt làm giao diện chính)


Cuối cùng tôi nhận ra rằng tôi đã xem xét thời LaunchScreen.storyboard điểm đáng lẽ tôi nên làm việc cùng Main.storyboard. Sau khi tôi tìm ra điều đó, màn hình xuất hiện với nội dung. Cám ơn các con trỏ ở đây
Gene Bo

5

Giải pháp 1: Bạn có thể Quit simulatorthử lại.

Giải pháp 2 (Khuyến nghị): Đi tới iOS Simulator->Reset Content and Settings...

Bước 1

Điều này sẽ bật lên một cảnh báo nêu rõ 'Are you sure you want to reset the iOS Simulator content and settings?'

Bước 2

Chọn Resetnếu bạn muốn hoặc Don't Resetnút khác .

Lưu ý rằng sau khi bạn đặt lại nội dung trình mô phỏng, tất cả ứng dụng được cài đặt trên trình mô phỏng sẽ bị xóa và nó sẽ đặt lại về cài đặt ban đầu.


5

Một giải pháp khác là nếu bạn đang xây dựng giao diện người dùng theo chương trình trong dự án Objective C, thì bạn có thể cần thêm một số mã để tăng chế độ xem, vì vậy bạn sẽ cần thêm 3 dòng đó để làm cho giao diện của cửa sổ tương tác với mã (2 bên ngoài đang thực sự tương tác với mã và mã kia sẽ thay đổi màn hình thành màu trắng để bạn biết nó hoạt động).

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

Khởi động lại máy tính là tất cả những gì bạn cần làm.


đôi khi các công trình công cụ đơn giản, giải quyết màn hình của tôi iPad ứng dụng đen
Anton - hình lục giác

4

Nếu bạn mất điểm nhập trong Bảng phân cảnh của mình hoặc chỉ muốn thay đổi điểm nhập, bạn có thể chỉ định điểm này trong Trình tạo giao diện. Để thiết lập một điểm vào mới, trước tiên bạn phải quyết định ViewController nào sẽ hoạt động như một điểm vào mới và trong Trình kiểm tra thuộc tính, hãy chọn hộp kiểm Cảnh ban đầu.

Bạn có thể thử: http://www.scott-sherwood.com/ios-5-specify-the-entry-point-of-your-storyboard/


1

Hãy đảm bảo rằng bạn đã làm điều này, nếu bạn đang nhận được màn hình đen sau khi sao chép bảng phân cảnh từ một dự án khác nhập mô tả hình ảnh ở đây


0

Tôi đã cố gắng tìm ra bản sửa lỗi cho điều này. Nó được tìm thấy nhờ bài đăng trên blog này:

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

Giải pháp là nhấn cmd + shift +, (lệnh, shift và sau đó là dấu phẩy ",") .. để tải một số tùy chọn để phát hành hoặc gỡ lỗi.

Thay đổi trình gỡ lỗi từ LLDB sang GDB. Điều này khắc phục sự cố.


1
Trình gỡ lỗi GDB không được dùng nữa và Xcode 4.6 là phiên bản cuối cùng hỗ trợ nó. developer.apple.com/library/mac/#releasenotes/DeveloperTools/…
Aaron Brager

0

Để đảm bảo đó là sự cố trình mô phỏng, hãy xem liệu bạn có thể kết nối với trình mô phỏng với một dự án hoàn toàn mới mà không cần thay đổi bất kỳ mã nào hay không. Hãy thử mẫu thanh tab.

Nếu bạn cho rằng đó là sự cố giả lập, hãy nhấn vào menu Trình mô phỏng iOS. Chọn "Đặt lại Nội dung và Cài đặt ...". Nhấn "Đặt lại".

Tôi không thể thấy XIB của bạn và @properties nào bạn đã kết nối trong Trình tạo giao diện, nhưng cũng có thể là bạn không tải cửa sổ của mình hoặc cửa sổ của bạn không tải bộ điều khiển chế độ xem của bạn.


Xin chào Aaron, cảm ơn vì đã phản hồi. Tôi đã thử chỉ tải một dự án trống (thanh tab và cả ứng dụng trống). Nó có cùng một vấn đề. Khi sử dụng trình gỡ lỗi LLDB, nó không thành công mọi lúc. Nếu tôi chuyển nó sang GDB, thì nó hoạt động tốt. Hãy xem bình luận của bạn bên dưới về câu trả lời của tôi về việc nó sẽ không được dùng nữa sau 4.6. Tôi chỉ hy vọng rằng một cái gì đó sẽ hoạt động khi thời điểm đó đến, bởi vì nó có vẻ là vấn đề chính.
Matt,

0

Tôi đã gặp vấn đề tương tự với Xcode ... màn hình đen khi khởi chạy ứng dụng, không gỡ lỗi và nhấp vào sẽ khóa Xcode.

Cuối cùng tôi đã tìm thấy sự cố ... theo hướng dẫn rằng trình mô phỏng không thể kết nối với Xcode, tôi đã xem xét tệp etc / hosts của mình và thấy rằng vài tháng trước để giải quyết một vấn đề khác, tôi đã chỉnh sửa tệp máy chủ để ánh xạ localhost với IP cố định thay vì mặc định ... giá trị của tôi:

10.0.1.17 localhost

Điều này sẽ hoạt động vì đó là IP của tôi, nhưng thay đổi nó trở lại thành IP mặc định đã sửa Xcode ...

127.0.0.1 localhost

Hi vọng điêu nay co ich.


0

Tôi đã làm những gì doug đề xuất ("Đặt lại Nội dung và Cài đặt") hoạt động nhưng mất rất nhiều thời gian và nó thực sự gây phiền nhiễu ... cho đến khi tôi tình cờ tìm thấy một giải pháp khác nhanh hơn nhiều và dường như cũng hoạt động cho đến nay! Chỉ cần nhấn cmd + L trên trình mô phỏng của bạn hoặc đi tới trình đơn giả lập "Phần cứng -> Khóa", sẽ khóa màn hình, khi bạn mở khóa màn hình, ứng dụng sẽ hoạt động như chưa từng có gì xảy ra :)


0

Điều đã xảy ra với tôi là Loại lớp không phải là UIViewController cho tập lệnh được đính kèm với bộ điều khiển chế độ xem của tôi. Đó là dành cho một UITabController ..... Tôi đã nhanh chóng tạo nhầm loại lớp sai .... Vì vậy, hãy đảm bảo lớp nếu đúng loại .. Hy vọng điều này sẽ giúp ai đó. Tôi đã vội vàng và mắc phải sai lầm này.


0

Chỉ cần đặt lại trình mô phỏng của bạn bằng cách nhấp vào Trình mô phỏng-> Đặt lại Nội dung và Cài đặt ..


0

bạn cũng có thể đi tới Phần cứng -> khởi động lại, sau đó Phần cứng -> Trang chủ và nhấp vào Ứng dụng của bạn


0

Đảm bảo rằng Bộ điều khiển Chế độ xem Ban đầu được đặt


0

Tôi đã giải quyết vấn đề này chỉ sau khi xóa trình mô phỏng với các phiên bản iOS trước.


0

Tôi đã có màn hình giả lập màu đen chỉ dành cho sim iOS 11. Sau khi cố gắng đặt lại, khởi động lại, cài đặt lại và tạo tài khoản sử dụng hoàn toàn mới trên máy của tôi, tôi đã tìm thấy giải pháp này:

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

được tìm thấy trong câu trả lời này tại đây: Xcode 9 iOS Simulator trở thành màn hình đen sau khi cài đặt Xcode 10 beta


0

Vui lòng kiểm tra tất cả các ràng buộc cho tất cả các chế độ xem và xem lại bảng phân cảnh hoàn chỉnh. Thông thường điều này xảy ra vì điều đó.

Trân trọng, Arora


0

Trong trường hợp gần đây bạn đã cập nhật lên Xcode 11 beta 3 và cố gắng chạy một dự án SwiftUI cũ hơn, bạn phải thực hiện một số thay đổi trong SceneDelegate nơi các chế độ xem được tải, nếu không, màn hình sẽ vẫn đen trên các thiết bị chạy iOS 13 beta 3. bao gồm tất cả các trình mô phỏng.

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

Hành vi không giới hạn nghiêm ngặt đối với trình mô phỏng, nhưng vì hầu hết mọi người sẽ chạy phần mềm beta độc quyền trên trình mô phỏng nên nó sẽ chỉ xảy ra trong bối cảnh này. Nó làm tôi bối rối trong một thời gian khá dài, vì vậy hy vọng nó sẽ hữu ích.


0

Khi tôi thực hiện dự án của mình trên Xcode 11.1, tôi gặp sự cố đó. Sự cố màn hình đen đó có thể xảy ra bất kỳ bản trình bày nào giữa các ViewControllers.

Câu trả lời đó đã giúp tôi. Bởi vì bản trình bày phương thức đã thay đổi với iOS 13. Nếu bạn không gặp sự cố đó trước iOS 13, hãy thử thêm dòng bên dưới vào ViewController của bạn trước bản trình bày của nó;

viewController.modalPresentationStyle = .fullScreen

sau khi mã của bạn có thể giống như dưới đây;

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

0

Tôi đang phát triển flashing bằng cách sử dụng studio android và chạy trình mô phỏng, trình mô phỏng bị tối và tôi đã đặt lại nội dung theo câu trả lời được chấp nhận. Nhưng điều đó không khắc phục được sự cố của tôi. CPU của tôi đang chạy bằng cách nào đó đủ cao, vì vậy tôi đã khởi động lại nhưng không khắc phục được sự cố. Tôi đã mở Xcode và chạy một trong các ứng dụng iOS gốc của mình, trình mô phỏng được mở lại như bình thường. Tôi đã đóng Xcode và mở Android Studio, sau đó bắt đầu phát triển lại ứng dụng flop.


0

nhập mô tả hình ảnh ở đây

Đây là lý do của tôi để có vấn đề này.

Vì một số lý do, "Là Bộ điều khiển Chế độ xem Ban đầu" (đối với Bộ điều khiển Chế độ xem chính của tôi) đã bị bỏ chọn, điều này gây ra màn hình đen khi tải.

Hy vọng điều này sẽ giúp ai đó ngoài kia!


0

Tôi đã giải quyết câu hỏi này bằng cách đặt màu nền cửa sổ như thế này trong 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
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.