Objective-C:帮助 - 我的xib不显示?

时间:2011-09-15 21:40:36

标签: iphone objective-c ios xib

我有以下Objective-C代码:

MainMenu *main= [[MainMenu alloc] initWithNibName:nil bundle:nil];
[[self navigationController]pushViewController:main animated:YES];
NSLog(@"hello");

我有一个名为'MainMenu'的类,带有相应的头文件和xib文件。不管我做什么,它都不会显示出来。我已经确认代码到达上面,因为NSLog('hello')。

我已经把头发拉了几个小时了,我根本无法找到它的底部。

我希望有人可以提供帮助,


编辑 - 仍有问题...

以下是我的项目设置的一些截图:

Project topology

MainMenu.xib

PrestoCab11ViewController.xib

MainMenu.xib


好的,我试过这个:

MainMenu *main= [[MainMenu alloc] initWithNibName:nil bundle:nil];
[[self navigationController]pushViewController:main animated:YES];
[self.view addSubview:main.view];

但它仍然不起作用......

非常感谢,

5 个答案:

答案 0 :(得分:1)

不要拉你的头发只是密切关注你的代码:你的initWithNibName中有nil。什么是MainMenu它是viewController还是什么?并放置正确的笔尖让你获得Hello。

按要求更新:

MainMenu *main= (MainMenu *)[MainMenu alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:main];
[self.navigationController presentModalViewController:nav animated:YES];
NSLog(@"hello");

答案 1 :(得分:1)

为什么要将nibName设为nil?如果笔尖的名称是MainMenu,那么您需要:

MainMenu *main= [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil];
[self.navigationController pushViewController:main animated:YES];
[main release];

您确定自己拥有UINavigationController以推送新视图吗?

希望有帮助!

答案 2 :(得分:1)

initWithNibName为nil的事实不应该是问题,因为如果给定nil它会查找具有类的确切名称的nib。

两件事:

1)确保最近运行了一个干净并确保正确加载了文件。

2)确保navigationController不是nil,如果是,那么如果你不打算使用导航控制器,你需要确保你制作导航控制器,考虑使用:

- (void)presentModalViewController:(UIViewController *)modalViewController 
                          animated:(BOOL)animated

答案 3 :(得分:1)

我想问题是您没有设置导航控制器。尝试通过

呈现视图控制器
[self presentModalViewController:main animated:YES];

答案 4 :(得分:0)

验证对象所有者实际上是MainMenu并且视图已连接。

在MainMenu NIB中,选择文件所有者,然后单击Identity Inspector。类应与您的VC类名匹配。

然后选择NIB中的主视图,并单击Connections Inspector。视图插座应连接到文件所有者。

如果这些都设置正确,那么发布更多周围的代码。值得注意的是,如果这两个都设置了,

MainMenu * main= [[MainMenu alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:main animated:YES];

将加载正确的NIB并显示它。

你看到 的是什么?另一点如果MainMenu是其他一些带有NIB的VC的子类,则必须更改基类'init以覆盖默认行为,例如:

    self = [super initWithNibName:nibNameOrNil == nil ? @"BaseViewController" : nibNameOrNil bundle:nibBundleOrNil]

但是在这种情况下,你必须具体说明将覆盖基本视图控制器的NIB。

发布更多代码,让我们知道您在跑步时所看到的内容。