Ios 无法使用导航控制器加载新视图

Ios 无法使用导航控制器加载新视图,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我是IOS开发新手,我正在尝试通过编程加载新视图。我有一个根视图。当应用程序启动时,根视图将正确加载。在根视图中,当我按下按钮时,我想加载一个新视图 新视图的自定义类是:PlaceDetailsController 我的代码是: PlaceDetailsController *x = [[PlaceDetailsController alloc] initWithNibName:@"PlaceDetailsController" bundle:nil]; [self.navigationCo

我是IOS开发新手,我正在尝试通过编程加载新视图。我有一个根视图。当应用程序启动时,根视图将正确加载。在根视图中,当我按下按钮时,我想加载一个新视图

新视图的自定义类是:
PlaceDetailsController

我的代码是:

 PlaceDetailsController *x = [[PlaceDetailsController alloc] initWithNibName:@"PlaceDetailsController" bundle:nil];
 [self.navigationController pushViewController:x animated:YES];
我收到以下错误:

2013-11-15 17:29:06.164 Info.mu.final[1806:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/noor/Library/Application Support/iPhone Simulator/6.1/Applications/7FD5D7FC-38DE-448F-84F1-17879202DBA7/Info.mu.final.app> (loaded)' with name 'PlaceDetailsController''
*** First throw call stack:
(0x211b012 0x19cce7e 0x211adeb 0x1134ef9 0xff97e7 0xff9dc8 0xff9ff8 0xffa232 0xffa4da 0x10118e5 0x10119cb 0x1011c76 0x1011d71 0x101289b 0x1012e93 0x1012a88 0x2a05 0xaa3ca 0xa7c22 0x11e385a 0x11e299b 0x11e40df 0x11e6d2d 0x11e6cac 0x11dea28 0xf4b972 0xf4be53 0xf29d4a 0xf1b698 0x283bdf9 0x283bad0 0x2090bf5 0x2090962 0x20c1bb6 0x20c0f44 0x20c0e1b 0x283a7e3 0x283a668 0xf18ffc 0x226d 0x2195)
libc++abi.dylib: terminate called throwing an exception
(lldb) 
2013-11-15 17:29:06.164 Info.mu.final[1806:c07]***由于未捕获的异常“NSInternalInconsistenceException”而终止应用程序,原因是:“无法在捆绑包中加载NIB:”名为“PlaceDetailsController”的“NSBundle(loaded)”
***第一次抛出调用堆栈:
(0x211b012 0x19cce7e 0x211ADB 0x1134ef9 0xff97e7 0xff9dc8 0xff9ff8 0xffa232 0xffa4da 0x10118e5 0x10119cb 0x1011c76 0x1011d71 0x101289b 0x1012e93 0x1012a88 0x2a05 0xaa3ca 0xa7c22 0x11e40df 0x11e6d2d 0x11e6cac 0x11dea28 0xf4b972 0xf4be53 0xf29d4a 0xf1b698 0x283BD9 0x2830 0xaa3ca 0xA2085 0xC12090BF20B20C0283a7e3 0x283a668 0xf18ffc 0x226d 0x2195)
libc++abi.dylib:terminate调用引发异常
(lldb)
所选视图是我要加载的视图:


任何建议???

请确保检查是否已将自定义视图设置为xib/情节提要文件中的PlaceDetailsController。(转到xib/storyboard文件,单击视图,转到右侧面板上的identity inspector,确保在顶部的自定义类textfild中看到placeDetails控件)

如果这是正确的,那么在XCode之外重命名某些文件时通常会发生此错误。要解决此问题,您只需从项目中删除文件(右键单击-删除(确保仅删除引用),然后将其重新导入项目中


在那之后一切都应该正常。

一定要检查是否在xib/情节提要文件中将customView设置为PlaceDetailsController。(在xib/情节提要文件上,单击视图,转到右侧面板上的identity inspector,并确保在顶部的自定义类textfild中看到PlaceDetailsController)

如果这是正确的,在XCode之外重命名某些文件时通常会发生此错误。要解决此问题,您只需从项目中删除这些文件(右键单击-删除(确保仅删除引用),然后在项目中重新导入它们


之后一切都会好起来。

我感觉你在使用故事板,对吗

要推送启用故事板的视图,请使用以下代码

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewIdentifier"];
[self presentViewController:viewController animated:YES completion:nil];
您需要确保在情节提要中设置了情节提要ID(它位于identity inspector中(单击视图控制器后右侧的第三个按钮))

编辑:如果您正在从导航控制器推送视图

您需要设置一个Segue(比听起来容易多了!)。在故事板中,按住Ctrl键并单击视图控制器,然后将其拖动到其他视图控制器并选择“推送”,您还需要提供此推送序列和标识符,这可以在属性检查器中完成(确保您已单击推送序列对象!)。然后在希望推送发生的代码中使用以下命令:

[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];

我感觉你在用故事板,对吗

要推送启用故事板的视图,请使用以下代码

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewIdentifier"];
[self presentViewController:viewController animated:YES completion:nil];
您需要确保在情节提要中设置了情节提要ID(它位于identity inspector中(单击视图控制器后右侧的第三个按钮))

编辑:如果您正在从导航控制器推送视图

您需要设置一个Segue(比听起来容易多了!)。在故事板中,按住Ctrl键并单击视图控制器,然后将其拖动到其他视图控制器并选择“推送”,您还需要提供此推送序列和标识符,这可以在属性检查器中完成(确保您已单击推送序列对象!)。然后在希望推送发生的代码中使用以下命令:

[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];

你有xib PlaceDetails控制器吗?我使用的是序列图像板,我要加载的视图的自定义类是PlaceDetails控制器OK。initWithNib因此不工作。你有xib PlaceDetails控制器吗?我使用的是序列图像板,我要加载的视图的自定义类是PlaceDetails控制器OK。initWithNib不工作是因为当然可以。这一个正在工作,但是我需要在导航栏上添加该项才能手动返回到上一个视图吗?@user1774937我已经更新了我的答案:)欢迎使用iOS开发!感谢它的工作,但是你能告诉我为什么使用nibfilename它不工作吗?从我看到的示例来看,它应该工作?不是吗?当然,因为你使用的是故事板,所以你需要通过故事板进行所有调用。你仍然可以使用NIB,但你需要手动创建并调用它们-这只是一个简单的过程iOS最近的开发方式发生了变化。这一个正在运行,但我是否需要在导航栏上添加该项以手动返回到上一个视图?@user1774937我已更新了我的答案:)欢迎使用iOS开发!谢谢它的工作,但你能告诉我为什么用nibfilename它不工作吗?从我看到的样本来看,它应该是工作的?不是吗?当然,因为您使用的是故事板,所以您需要执行所有贯穿故事板的调用。你仍然可以使用NIB,但你需要手工制作并调用它们——这只是iOS最近发展的一个变化。