Xcode App 有时不会加载视图

Posted

技术标签:

【中文标题】Xcode App 有时不会加载视图【英文标题】:Xcode App won't load view sometimes 【发布时间】:2016-04-26 17:07:39 【问题描述】:

我的项目在没有情节提要的情况下运行,所以我在 AppDelegate 中加载了我的视图:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window = window;
    self.window.rootViewController = [[SYLoginController alloc] init];
    [self.window makeKeyAndVisible];
    return YES;

它曾经在 iPhone 6 sim 9.3 上工作,但现在,在所有模拟器上它只显示黑屏。但在我的 iPhone 6 设备上它可以工作。而在另一台 iPhone 6 上,它也显示黑屏。这两款 iPhone 几乎是同一时间购买的 16gb iPhone 6。

SYLoginControllers viewDiDLoad 我正在记录其中一个按钮的文本。仅在我的设备上打印文本,在所有模拟器和其他 iPhone 上打印(空),所以我假设 xib 没有正确加载。

SYLoginController 是一个UIViewController,并且相关的xib 拥有一个其FilesOwner 设置为SYLoginController 的UIView。我真的不明白为什么它只适用于这个特定的设备。我也试过[[SYTabBarController alloc] initWithNibName:@"SYLoginController" bundle:nil],这也行不通...

【问题讨论】:

在运行项目之前,您是否尝试过清理(Cmd-K)或卸载真实设备中的应用程序?它也不应该在真实设备上工作。 我尝试清理项目,我尝试清理派生数据,我也多次卸载该应用程序。一部 iPhone 工作,另一部不工作,模拟器也不工作。 【参考方案1】:

您是否尝试将其包裹在导航控制器周围?

SYLoginController *syVC = [[SYLoginController alloc]initWithNibName:@"SYLoginController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc] syVC];
self.window.rootViewController = nav;

还要再次检查自定义类是否在 XIB 文件中设置为 SYLoginController。并且视图连接到文件所有者。

【讨论】:

我试过了,现在它是一个黑屏的导航控制器(你可以看到导航栏)...... 是的,您可以隐藏导航栏。但奇怪...检查XIB文件。打印出视图帧大小。给 SyLoginController 一个其他的背景色。 我可以使用self.window.backgroundColor来设置view的backgroundcolor,但是好像xib没有加载。奇怪的是,在我的 iPhone 上它可以工作。

以上是关于Xcode App 有时不会加载视图的主要内容,如果未能解决你的问题,请参考以下文章

从底部加载视图不会填满整个视图

XCode - 无法加载 NIB 文件包

TableViewController 在搜索时填充,但不会加载初始视图

Xcode Webview 输出“空”

如何在 Xcode 中的 UITests 下等待,直到可以看到某些视图以供点击?

如何重新加载表格视图? Xcode 11