我已经将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是这样的:
无法理解我哪里出错?
答案 0 :(得分:8)
当你在你的xib中创建一个插座然后错误地(或者有意识地)你删除了那个iboutlet对象时,通常会出现这个错误..反之亦然..
请仔细检查你的xib的iboutlet连接。
我希望它会有所帮助
答案 1 :(得分:2)
检查拼写:
@property(nonatomic,retain)IBOutlet UINavigationBar * navigationBar;
由于未捕获的异常'NSUnknownKeyException'而终止应用, reason:SecondView setValue:forUndefinedKey:]:这个类不是键 符号编码兼容关键导航栏。
请注意navigationBar
和navigationbar
的区别,区分大小写。
答案 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)
对于错误的案例,Rakesh提供了正确的答案(插座被删除 - 需要准确检查你的xib&s;故事板)并添加少量: 它也可能是由于简单地重命名插座而造成的,并且#34; Find&amp; Replace&#34;。在这种情况下,出口在源中的任何地方都被重新命名,但不在故事板中。 在这种情况下,请确保您在故事板中准确地重命名了插座,例如:
grep -r --include&#34; *。storyboard&#34; navigationBar。