0

我已将 UINavigationbar 和 UIscrollView 添加到 UIView(SecondView)。当我单击 firstView 中的按钮时,它应该将我带到 secondView。点击按钮:

 SecondView *secondview=[[SecondView alloc]initWithNibName:@"SecondView" bundle:nil];
 [self presentModalViewController: secondview animated:NO]; //error at this line 
 [secondview release];

在 secondView.h

@property(nonatomic,retain)IBOutlet UINavigationBar *navigationBar;
@property(nonatomic,retain)IBOutlet UIScrollView *testscroll;

第二视图.m:

@synthesize navigationBar,testscroll;

但我收到如下错误:

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:SecondView setValue:forUndefinedKey:]:此类与键导航栏的键值编码不兼容。

我的 secondView.xib 是这样的:

无法理解我哪里出错了?

4

8 回答 8

9

当您在 xib 中创建了一个出口然后错误地(或故意)删除了该 iboutlet 对象时,通常会出现此错误.. 反之亦然..

所以仔细检查你的xib的iboutlet连接..

我希望它会有所帮助

于 2013-01-04T06:08:35.800 回答
2

检查拼写:

@property(nonatomic,retain)IBOutlet UINavigationBar *navigationBar;

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:SecondView setValue:forUndefinedKey:]:此类与键导航栏的键值编码不兼容。

注意 和 的区别navigationBarnavigationbar它区分大小写。

于 2013-01-04T06:05:42.853 回答
1

您可以像这样使用导航栏呈现 ModelViweController:-

SecondView *objSecondView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
UINavigationController *navbar = [[UINavigationController alloc] initWithRootViewController:objSecondView];

// add navigation bar image at hear

     UIImage *image = [UIImage imageNamed:@"nav_launcher.png"];
                [navbar.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
     navbar.navigationBar.tintColor=[UIColor whiteColor];

     [self presentModalViewController:navbar animated:YES];

您可以将一个视图推送到另一个视图,例如:-

SecondView *objSecondView =[[SecondView alloc]initWithNibName:@"SecondView" bundle:nil];
[self.navigationController pushViewController:objSecondView animated:YES];

笔记

有时它会发生错误,因为我们在这行代码中输入了错误的 Nib 名称:initWithNibName:@"SecondView" bundle:nil];

更新

无需在 SecondViewcontroller 添加导航栏锡图像,您可以添加所有听到的东西,如 barbuttonItem、tincolor、navigatin BackgroudnColor 等。

于 2013-01-04T06:01:08.977 回答
0

pushViewController:用于推送 UIViewController。看起来SecondView是 UIView,而不是 UIViewController。

于 2013-01-04T06:04:31.213 回答
0

我认为您还没有将某些对象连接到该 UIViewController 的 xib 中的文件所有者...

检查一次我的朋友..

让我知道它是否有效!!!\

快乐编码!!!!

于 2013-01-04T06:21:37.603 回答
0

我自己解决了。我什么都错了。一切都很好。我添加了一个新视图并建立了相同的连接并得到了它。不知道为什么这在 xcode 中经常发生。

于 2013-01-04T07:54:32.983 回答
0

如果您再次遇到此问题,请尝试:选择 File's Owner 然后单击“Connection Inspector”(右窗格顶部的上方),您将看到所有插座。寻找任何像这样(!)的标志,您会在小圆圈上找到它,表明缺少插座,您所要做的就是正确连接它或移除插座。

于 2015-01-06T05:54:03.477 回答
0
  1. 对于错误的情况,Rakesh 提供了正确的答案(出口已被删除 - 需要准确检查您的 xib / 情节提要),并附有少量补充:这也可能是通过简单地“查找和替换”重命名出口引起的。在这种情况下,该出口在源代码中的所有位置都被重新命名,但不是在故事板中。在这种情况下,请确保您在故事板中也准确地重命名了插座,例如:

    grep -r --include "*.storyboard" 导航栏。

  2. 一切看起来都还不错:XCode 缓存您的 xib,以修复该行为:
    • 干净的构建
    • 从设备/模拟器中删除应用程序
    • 重新启动应用程序可能还需要重新启动模拟器(对我来说,设备从来不需要)
于 2015-10-22T06:22:46.080 回答