我刚开始学习创建iOS应用程序,所以我只是一个菜鸟。特别是因为它在处理UI和代码之间的导航和交互方面有不同的方法。 :)
好的我正在使用带有SDK版本7的xCode 5.我创建了一个单一的视图应用程序,它给了我一个.storyboard
文件,我猜想当我看的时候会替换曾经存在的.xib
教程视频。
所以我设计了一个简单的用户界面作为main
视图,现在我希望将另一个视图作为landing
视图。所以它应该在main
视图之前进入。我继续前进,从New File...
我创建了一个Objective-C类,它是UIViewController
的子类,并将其命名为Detail
。令人惊讶的是,它再次给了我一个.xib
文件。很公平。然后我只是在UI中输入一个简单的输入来预览它。
然后从“项目设置”的“常规”选项卡中,我更改了Main Interface
以匹配我创建的新.xib
文件。但是当我启动应用程序时,它崩溃了,我不知道问题是什么。
这是堆栈跟踪:
2013-11-27 18:31:21.735 TestViewSwitching[10123:70b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x8b35dc0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
*** First throw call stack:
(
0 CoreFoundation 0x0174c5e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x014bb8b6 objc_exception_throw + 44
2 CoreFoundation 0x017dc6a1 -[NSException raise] + 17
3 Foundation 0x0117c9ee -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 282
4 Foundation 0x010e8cfb _NSSetUsingKeyValueSetter + 88
5 Foundation 0x010e8253 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267
6 Foundation 0x0114a70a -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 412
7 UIKit 0x004cba15 -[UIRuntimeOutletConnection connect] + 106
8 libobjc.A.dylib 0x014cd7d2 -[NSObject performSelector:] + 62
9 CoreFoundation 0x01747b6a -[NSArray makeObjectsPerformSelector:] + 314
10 UIKit 0x004ca56e -[UINib instantiateWithOwner:options:] + 1417
11 UIKit 0x004cc2fb -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 165
12 UIKit 0x002293bb -[UIApplication _loadMainNibFileNamed:bundle:] + 58
13 UIKit 0x002296e9 -[UIApplication _loadMainInterfaceFile] + 245
14 UIKit 0x0022828f -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 543
15 UIKit 0x0023c87c -[UIApplication handleEvent:withNewEvent:] + 3447
16 UIKit 0x0023cde9 -[UIApplication sendEvent:] + 85
17 UIKit 0x0022a025 _UIApplicationHandleEvent + 736
18 GraphicsServices 0x036df2f6 _PurpleEventCallback + 776
19 GraphicsServices 0x036dee01 PurpleEventCallback + 46
20 CoreFoundation 0x016c7d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
21 CoreFoundation 0x016c7a9b __CFRunLoopDoSource1 + 523
22 CoreFoundation 0x016f277c __CFRunLoopRun + 2156
23 CoreFoundation 0x016f1ac3 CFRunLoopRunSpecific + 467
24 CoreFoundation 0x016f18db CFRunLoopRunInMode + 123
25 UIKit 0x00227add -[UIApplication _run] + 840
26 UIKit 0x00229d3b UIApplicationMain + 1225
27 TestViewSwitching 0x0000211d main + 141
28 libdyld.dylib 0x01d7670d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Android中的这个过程非常简单,但我不知道为什么Apple会尝试让开发人员更难一切。他们不能只设置一个可以生成新视图的类型吗?
答案 0 :(得分:3)
@Miro Markarian,你可以查看.xib文件的视图插座。它可能是断开连接或断开的。这个问题通常是由于这个问题引起的。试着将视图控制器视图的插座添加到.xib视图中。
答案 1 :(得分:0)
主视图控制器.xib
上的视图插座未正确连接到file owner
。