加载新视图在 iphone 中显示空白屏幕

Posted

技术标签:

【中文标题】加载新视图在 iphone 中显示空白屏幕【英文标题】:Loading new view shows blank screen in iphone 【发布时间】:2012-08-22 04:21:59 【问题描述】:

请注意,我正在尝试学习 iphone,对于这个问题,我想不出任何解决方案。

我创建了一个名为 Loading 的空视图。我已经用一些图像填充了它的 Loading.xib。现在这是我正在使用的代码

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

    Loading *firstView = [[Loading alloc]init];


    self.navigationController = [[UINavigationController alloc]init]; 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
    [self.navigationController pushViewController:firstView animated:YES];
    // Override point for customization after application launch.
    [self.window addSubview:self.navigationController.view];
    [window makeKeyAndVisible];
    return YES;

问题是,当我运行代码时,它只会显示空白屏幕。

如何加载加载屏幕。欢迎任何推荐的教程链接

@implementation Loading

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
    
    return self;

最好的问候

【问题讨论】:

【参考方案1】:

首先,Loading 是一个视图而不是视图控制器。你不应该用导航控制器来推动它。

其次,将导航控制器的视图添加到窗口中并不是一个好主意。

请查看thread 以了解有关UIViewUIViewController 的更多详细信息

相反,您可能想要创建一个 LoadingViewController,并将其视图(XIB 文件)更改为您想要的,然后使用这样的代码

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

LoadingViewController *lvc= [[LoadingViewController alloc]init];

self.navigationController = [[UINavigationController alloc] initWithRootViewController:lvc]; 
self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
// Override point for customization after application launch.
self.window.rootViewController = self.navigationController;
[window makeKeyAndVisible];
return YES;

【讨论】:

它是一个视图控制器。我已经把它变成了一个视图控制器。其次,我不能做一个加载屏幕根吗? 你可以。只需使用 self.window.rootViewController = loading。但是您是手动创建了 XIB 文件还是使用类创建了 XIB 文件?如果是前一种情况,您可能需要使用 initWithNibName。 我不是手动创建的,它是类自带的。请检查我编辑的加载代码。m 解决了这个***.com/questions/7520971/…【参考方案2】:

--> "加载.xib"

你永远不会加载这个,所以除非“加载”的 init: 选择器的实例做了一些花哨的东西,否则这个视图是空的。

编辑:“你能解释一下我怎么称呼它吗?”

覆盖初始化... *

- (id)init

    if ((self = [super initWithNibName:@"SomeNib" bundle:nil])) 
        // ...
    

    return self;

* 如果所有者和 nib 在 IB 中不匹配,您要么 A)在 IB 中正确创建配给,要么 B)在代码中手动执行:

更新初始化:

[super initWithNibName:nil bundle:nil]

覆盖:

- (void)loadView

    [super loadView];

    UINib *nib = [UINib nibWithNibName:@"SomeNib" bundle:nil];
    [nib instantiateWithOwner:self options:nil];

【讨论】:

你能解释一下我怎么称呼这个吗?【参考方案3】:

您必须更改代码,例如,

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

    Loading *firstView = [[Loading alloc] initWithNibName:@"Loading" bundle:nil];
    self.navigationController = [[UINavigationController alloc]init]; 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
    [self.window addSubview:self.navigationController.view];
    [window makeKeyAndVisible];
    [self.navigationController pushViewController:firstView animated:YES];
    return YES;

希望对你有所帮助。

【讨论】:

不工作,还有提示吗? :S 打开你的 MainWindow.xib。选择NavigationController。去检查员。将 NIB 名称设置为您的 Loading viewController。保存并运行。试试看。【参考方案4】:

您需要从其 nib 文件加载视图。这是一个例子:

Loading *firstView = [[Loading alloc] initWithNibName:@"Loading" bundle:nil];

另外,当你分配你的 UINavigationController 时,你也可以设置它的根视图控制器属性,而不必像这样推送视图:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: firstView];

【讨论】:

请进一步解释一下。我不太明白。我应该把这段代码放在哪里。 他的回答很完整; Apple 文档对于从 nib 加载视图也非常完整。 我不想让它成为 root,但我尝试了你的代码。它像往常一样是空白页。我的视图是 UIViewController。【参考方案5】:

如果有人找到了这个帖子,但仍然无法弄清楚。试试这个。我忘记为该视图控制器添加目标成员资格。

【讨论】:

以上是关于加载新视图在 iphone 中显示空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 / 为啥快照视图中的快照在 iPhone 7 Plus 模拟器中显示为空白?

将加载屏幕添加到 iphone 应用程序

显示新视图控制器的最佳实践 (iPhone)

ng-Route 没有加载视图,显示一个空白屏幕,没有任何错误

向 Master-Detail 应用程序添加模式加载视图(在 applicationDidBecomeActive 方法中)

显示 iPhone 屏幕尺寸的 iPad 应用程序