0

请注意,我正在尝试学习 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;
}

最好的祝福

4

5 回答 5

1

--> "加载.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];
}
于 2012-08-22T04:28:34.467 回答
1

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

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

请检查此线程UIView以获取有关和的更多详细信息UIViewController

相反,您可能想要创建一个 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;
}
于 2012-08-22T04:29:38.133 回答
0

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

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

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

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: firstView];
于 2012-08-22T04:26:22.753 回答
0

您必须更改代码,例如

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

希望对您有所帮助。

于 2012-08-22T04:29:15.150 回答
0

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

在此处输入图像描述

于 2014-08-09T18:48:13.830 回答