【问题标题】:class is not key value coding-compliant for the key navigationBar类与键 navigationBar 的键值编码不兼容
【发布时间】:2013-01-04 05:51:25
【问题描述】:

我已将 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;

SecondView.m:

@synthesize navigationBar,testscroll;

但我收到如下错误:

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

我的 secondView.xib 是这样的:

不明白我哪里出错了?

【问题讨论】:

  • [self presentModalViewController: secondview animated:yes];.. 可能会起作用,如果你想推送那个类,你必须写... [self.navigationController pushViewController:secView animated:YES ];
  • @Sudha 他不是要那个

标签: iphone xcode uinavigationbar


【解决方案1】:

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

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

希望对你有帮助

【讨论】:

  • 我已经检查过了,刚刚粘贴了屏幕截图。你可以看看,让我知道
【解决方案2】:

检查拼写:

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

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

注意navigationBarnavigationbar的区别,区分大小写。

【讨论】:

    【解决方案3】:

    您可以像这样使用导航栏呈现 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 等。

    【讨论】:

    • 但我的不是基于导航的应用程序,而且我在 SecondView 中以编程方式添加导航栏,例如 - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"c_launcher.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; imageView.frame =CGRectMake(0,0,120,45); [self.navigationBar setFrame:CGRectMake(0,0,320,70)]; self.navigationBar.tintColor=[UIColor whiteColor]; [self.navigationBar addSubview:imageView]; [imageView 发布]; }.那我可以用你的代码吗?
    【解决方案4】:

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

    【讨论】:

    • 它只是一个 UIViewController 不是 UIView。
    【解决方案5】:

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

    检查一次我的朋友..

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

    编码愉快!!!!

    【讨论】:

      【解决方案6】:

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

      【讨论】:

      • 这是由于我告诉你的插座连接....你重新创建了所有的东西,然后它解决了问题
      • 这可能是由于已安装应用程序的资源不一致造成的。尝试删除该应用程序并重新安装它。清理您的项目也可能会有所帮助。
      【解决方案7】:

      如果你再次遇到这个问题, 尝试:选择文件的所有者,然后单击“连接检查器”(右窗格顶部的上方),您将看到所有插座。寻找任何像这样 (!) 的标志,您会在表示缺少插座的小圆圈上找到它,您所要做的就是正确连接它或移除插座。

      【讨论】:

        【解决方案8】:
        1. 对于错误的情况,Rakesh 提供了正确的答案(出口已被删除 - 需要准确检查您的 xib / 故事板),并添加少量内容: 它也可能是通过简单地“查找和替换”重命名插座引起的。在这种情况下,插座在源代码中的任何地方都被重新命名,但不是在故事板中。 在这种情况下,请确保您在故事板中也准确地重命名了出口,例如:

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

        2. 看起来一切正常:XCode 缓存您的 xib,以修复该行为:
          • 干净的构建
          • 从设备/模拟器中删除应用
          • 重启应用 可能还需要重启模拟器(对我来说,设备从来不需要)

        【讨论】:

          猜你喜欢
          • 2013-10-11
          • 2013-05-23
          • 2017-09-27
          • 1970-01-01
          • 1970-01-01
          • 2015-08-27
          • 2017-01-23
          • 2011-03-17
          • 2012-09-24
          相关资源
          最近更新 更多