У меня проблемы с запуском основного приложения для iPhone (во время чтения лекций Stanford iTunes CS193p) в симуляторе iOS.
Я искал какое-то время (как в Google, так и в SO), но пока не могу найти решение. Есть много похожих ошибок, но решения, похоже, не исправляют это.
В Xcode нажимаю "запустить". Он успешно компилируется и компилируется, запускает симулятор iOS, но никогда не загружает приложение. Только статус-бар вверху. С черным экраном.
Я написал только очень простой код (следуя лекциям) и не могу решить эту проблему.
Чтобы еще больше запутать ситуацию, я написал веб-оболочку (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
КалькуляторAppDelegate.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
источник
Ответы:
Удивительно, но то, что сработало для меня, - это перейти в меню iOS Simulator и нажать «Сбросить содержимое и настройки». (в iOS 13 он находится в разделе «Оборудование»)
источник
iOS-Simulator -> Reset Content and Settings
.xcrun simctl shutdown all
Перед перезагрузкой эмулятора сначала перейдите на экран « Навигатор проектов» ваших проектов и под общим экраном -> информация о депоименте проверьте правильность настройки основного свойства интерфейса !
источник
Если вы используете SwiftUI
Если вы обновляетесь с предыдущей версии Xcode 11, есть некоторые изменения в
SceneDelegate
willConnectTo session: options connectionOptions
инициализацию :Основной
window
теперь инициализируется с использованием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() }
источник
Я новичок в разработке приложений для iOS. Я с самого начала практиковался в разработке приложений для iOS, и при запуске очень простого приложения Hello World я также столкнулся с той же проблемой, что после создания и запуска приложения в симуляторе iOS появляется только черный пустой экран. Каким-то образом, пытаясь найти решение проблемы, я случайно щелкнул Window -> Scale -> 50% в симуляторе iOS, и это действительно решило мою проблему. Затем я мог видеть домашнюю страницу своего приложения и, щелкнув значок приложения, смог успешно запустить свое приложение. Версии приложения: Xcode 5.1 iOS Simulator: 7.1 OSX: 10.9.3
источник
Это могло произойти из-за неправильной установки информации о развертывании. (т.е. если ваша раскадровка не установлена в качестве основного интерфейса)
источник
LaunchScreen.storyboard
мне следовало работатьMain.storyboard
. Как только я это понял, появляется экран с содержимым. Спасибо за указатель здесьВсе, что вам нужно сделать, это перезагрузить компьютер.
источник
Решение 1. Вы можете
Quit simulator
попробовать еще раз.Решение 2 (рекомендуется): перейдите к
iOS Simulator
->Reset Content and Settings...
Появится всплывающее предупреждение о том,
'Are you sure you want to reset the iOS Simulator content and settings?'
Выберите,
Reset
если хотите, илиDon't Reset
кнопку.Обратите внимание, что после сброса содержимого симулятора все приложения, установленные на симуляторе, будут удалены, и оно будет сброшено до исходных настроек.
источник
Другое решение заключается в том, что если вы программно создаете пользовательский интерфейс в проекте Objective C, вам может потребоваться добавить код для расширения представления, поэтому вам нужно будет добавить эти 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; }
источник
Если вы потеряете точку входа в раскадровке или просто захотите изменить точку входа, вы можете указать это в Interface Builder. Чтобы установить новую точку входа, вы должны сначала решить, какой ViewController будет действовать как новая точка входа, и в инспекторе атрибутов установите флажок Initial Scene.
Вы можете попробовать: http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/
источник
Пожалуйста, убедитесь, что вы сделали это, если вы получаете черный экран после копирования раскадровки из другого проекта.
источник
Мне удалось найти решение этой проблемы. Это было любезно найдено благодаря этой публикации в блоге:
http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/
Решение состоит в том, чтобы нажать cmd + shift +, (command, shift, а затем запятую ",") .., чтобы загрузить некоторые параметры для выпуска или отладки.
Измените отладчик с LLDB на GDB. Это устраняет проблему.
источник
Чтобы убедиться, что это проблема симулятора, посмотрите, сможете ли вы подключиться к симулятору с совершенно новым проектом без изменения кода. Попробуйте шаблон панели вкладок.
Если вы думаете, что это проблема симулятора, нажмите меню симулятора iOS. Выберите «Сбросить содержимое и настройки ...». Нажимаем «Сброс».
Я не вижу ваш XIB и какие @properties вы подключили в Interface Builder, но также может быть, что вы не загружаете свое окно или ваше окно не загружает ваш контроллер представления.
источник
У меня была такая же проблема с Xcode ... черный экран при запуске приложений, без отладки и щелчка мыши Xcode заблокировался.
Я наконец нашел проблему ... следуя примеру, что симулятор не может подключиться к Xcode, я взглянул на свой файл etc / hosts и обнаружил, что несколько месяцев назад, чтобы решить другую проблему, я отредактировал файл хоста, чтобы сопоставить localhost с моим фиксированный IP вместо стандартного ... мое значение:
10.0.1.17 локальный хост
Это должно сработать, так как это мой IP, но вернув его обратно к фиксированному IP-адресу Xcode по умолчанию ...
127.0.0.1 локальный
Надеюсь это поможет.
источник
Я делал то, что предлагает Дуг («Сбросить содержимое и настройки»), что работает, но занимает много времени и действительно раздражает ... пока я недавно случайно не нашел другое решение, которое намного быстрее и, похоже, также работает до сих пор! Просто нажмите cmd + L на симуляторе или перейдите в меню симулятора «Оборудование -> Блокировка», которое блокирует экран, когда вы разблокируете экран, приложение работает, как будто ничего не произошло :)
источник
Со мной произошло то, что Тип класса не был UIViewController для скрипта, прикрепленного к моему контроллеру представления. Это было для UITabController ..... Я по ошибке быстро создал неправильный тип класса .... Так что убедитесь, что класс правильный тип ... Надеюсь, это кому-то поможет. Я очень спешил и совершил ошибку.
источник
Просто перезагрузите симулятор, нажав Симулятор-> Сбросить содержимое и настройки ..
источник
вы также можете перейти в «Оборудование» -> «Перезагрузка», затем «Оборудование» -> «Домой» и нажать на свое приложение.
источник
Убедитесь, что установлен Initial View Controller.
источник
Я решил это только после удаления симуляторов с предыдущих версий iOS.
источник
У меня были черные экраны симулятора только для симуляторов iOS 11. После попытки сброса, перезагрузки, переустановки и создания новой учетной записи пользователя на моем компьютере я нашел следующее решение:
defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3
найдено в этом ответе здесь: Симулятор iOS Xcode 9 становится черным экраном после установки бета-версии Xcode 10
источник
Пожалуйста, проверьте все ограничения для всех представлений и просмотрите полную раскадровку. Обычно это происходит из-за этого.
С уважением, Арора
источник
Если вы недавно обновились до 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() } }
Поведение не ограничивается строго симуляторами, но поскольку большинство людей будут запускать бета-версию программного обеспечения исключительно на симуляторах, это будет происходить только в этом контексте. Это озадачило меня на некоторое время, так что надеюсь, что это поможет.
источник
Когда я перенес свой проект на Xcode 11.1, у меня возникла проблема. Эта проблема с черным экраном может возникнуть при любой презентации внутри ViewControllers.
Этот ответ мне помог. Поскольку модальное представление изменилось в 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)
источник
Я разрабатывал флаттер с помощью студии Android и запускал симулятор, симулятор был темным, и я сбросил содержимое в соответствии с принятым ответом. Но это не устранило мою проблему. Мой процессор каким-то образом работал достаточно высоко, поэтому я перезапустил, но не исправил проблему. Я открыл Xcode и запустил одно из моих родных приложений для iOS, симулятор снова открылся как обычно. Я закрыл Xcode и открыл Android Studio, а затем снова начал разрабатывать приложение flutter.
источник
Это была моя причина возникновения этой проблемы.
По какой-то причине «Is Initial View Controller» (для моего основного View Controller) не был отмечен, что вызывало черный экран при загрузке.
Надеюсь, это кому-то поможет!
источник
Я решил этот вопрос, установив цвет фона окна, как это в 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 } }
источник