【问题标题】:Black screen after App Startup应用启动后黑屏
【发布时间】:2013-10-30 06:52:18
【问题描述】:

我正在设置第一个 viewController,它将出现在 App Startup 上。那是我的 AppDelegate.h:

#import "AppDelegate.h"
#import "TutorialController.h" // a simple UIViewController

@implementation AppDelegate

@synthesize window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    window.rootViewController = [[TutorialController alloc] init];

    [window makeKeyAndVisible];

    return YES;
}

它没有发出任何警报,但是,启动应用程序,在启动画面之后,它只出现一个黑屏。没有该代码,一切正常。我不能在 StoryBoard 中这样做,因为在解决了这个问题之后,我必须添加其他东西......可能出了什么问题?谢谢!

已解决:Solved using followben's reply.

【问题讨论】:

  • 在设置rootViewController之前用window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];创建一个窗口?
  • 不,我刚刚在 .h 中初始化了 @property (strong, nonatomic) UIWindow *window;,但是添加您的字符串后,问题仍然存在......
  • 无法在标头中初始化属性。标头只能声明内容。免责声明:我知道有例外,但这是简化的事实

标签: ios viewdidload appdelegate viewdidappear rootview


【解决方案1】:

.h:

@class MainViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong,nonatomic) MainViewController *mainViewController;

.m:

#import "MainViewController.h"

@implementation AppDelegate
@synthesize mainViewController;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{


    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.mainViewController;
    [self.window makeKeyAndVisible];
    return YES;
}

编辑,完整的project link (zipped)(工作:))

EDIT2:

如果您正在使用 Storyboard,请制作一个 Storyboard 文件,并将其分配给该项目的 Storyboard,如下图所示:主界面与您的 Storyboard 文件名相同。

而且您不必在您的应用委托中写入任何内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

您可以通过将这个小箭头移动到一个 ViewController 来设置起始页面,您想要在此图片上设置启动器:

如果你想用新的 TutorialViewController 分配你的 ViewController(在 storyboard 中),请像这样:

【讨论】:

  • '无法在包中加载 NIB:'NSBundle
  • 所以你没有一个名为“MainViewController”的XIB = NIB,然后使用self.mainViewController = [[MainViewController alloc] init];
  • 对不起,我可能犯了一个很大的错误,你能告诉我哪里错了吗?对不起,我要疯了!!太感谢了!! copy.com/lZ6LRKBhbuQn4rzN
  • 我已经下载了你的项目,解决了你的问题,我编辑了我的答案,你可以在其中找到工作项目的链接:)
  • 非常感谢!但是,如果我想加载在 Storyboard 中而不是通过代码制作的视图,我该如何解决?
【解决方案2】:

据我所知,这个问题是由 -(void)loadView 方法引起的。所以删除或注释这个方法,而是使用 - (void)viewDidLoad 来加载所有内容。

【讨论】:

    【解决方案3】:

    对我来说,这可能是因为我可能运行的是 iOS 12.4,但在默认的 iOS 项目中,有一些场景委托,它被注释为仅适用于 iOS 13。通过编写不工作的代码,让开发人员感到困惑的苹果做得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2013-08-17
      相关资源
      最近更新 更多