class不是键值导航栏的符号密码值

时间:2013-01-04 05:51:25

标签: iphone xcode uinavigationbar

我已经将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是这样的:

无法理解我哪里出错?

8 个答案:

答案 0 :(得分:8)

当你在你的xib中创建一个插座然后错误地(或者有意识地)你删除了那个iboutlet对象时,通常会出现这个错误..反之亦然..

请仔细检查你的xib的iboutlet连接。

我希望它会有所帮助

答案 1 :(得分:2)

检查拼写:

  

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

     

由于未捕获的异常'NSUnknownKeyException'而终止应用,   reason:SecondView setValue:forUndefinedKey:]:这个类不是键   符号编码兼容关键导航栏。

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

答案 2 :(得分: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等。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我认为你没有在UIViewController的xib中将某个对象连接到File的所有者......

检查一次我的朋友..

让我知道它的工作与否!!! \

快乐编码!!!!

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

  1. 对于错误的案例,Rakesh提供了正确的答案(插座被删除 - 需要准确检查你的xib&s;故事板)并添加少量: 它也可能是由于简单地重命名插座而造成的,并且#34; Find&amp; Replace&#34;。在这种情况下,出口在源中的任何地方都被重新命名,但不在故事板中。 在这种情况下,请确保您在故事板中准确地重命名了插座,例如:

    grep -r --include&#34; *。storyboard&#34; navigationBar。

  2. 比一切看起来还可以:XCode缓存你的xib,以修复行为:
    • clean build
    • 从设备/模拟器中删除应用
    • 重启应用 可能还需要重启模拟器(对于我来说,设备从未需要)