我有以下Objective-C代码:
MainMenu *main= [[MainMenu alloc] initWithNibName:nil bundle:nil];
[[self navigationController]pushViewController:main animated:YES];
NSLog(@"hello");
我有一个名为'MainMenu'的类,带有相应的头文件和xib文件。不管我做什么,它都不会显示出来。我已经确认代码到达上面,因为NSLog('hello')。
我已经把头发拉了几个小时了,我根本无法找到它的底部。
我希望有人可以提供帮助,
编辑 - 仍有问题...
以下是我的项目设置的一些截图:
好的,我试过这个:
MainMenu *main= [[MainMenu alloc] initWithNibName:nil bundle:nil];
[[self navigationController]pushViewController:main animated:YES];
[self.view addSubview:main.view];
但它仍然不起作用......
非常感谢,
答案 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。
发布更多代码,让我们知道您在跑步时所看到的内容。