我正在创建一个iPhone iOS应用程序。我在标签栏控制器中有3个标签。当我点击iOS模拟器中标签栏控制器上的第三个标签时,iOS模拟器会消失,我会看到带有绿色高亮区的main.m文件:
int retVal = UIApplicationMain(argc, argv, nil, nil);
构建错误表明:线程1:编程接收信号:SIGABRT
如果我查看屏幕底部的构建输出窗口,我会看到以下文字:
GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin".Attaching to process 4283.
**2011-07-03 12:45:37.114 Cypher Bot[4283:207] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x4e1b190> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key portraitView.'
*** Call stack at first throw:
(
0 CoreFoundation 0x00dce5a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x00f22313 objc_exception_throw + 44
2 CoreFoundation 0x00dce4e1 -[NSException raise] + 17
3 Foundation 0x007a0677 _NSSetUsingKeyValueSetter + 135
4 Foundation 0x007a05e5 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 285
5 UIKit 0x0021c30c -[UIRuntimeOutletConnection connect] + 112
6 CoreFoundation 0x00d448cf -[NSArray makeObjectsPerformSelector:] + 239
7 UIKit 0x0021ad23 -[UINib instantiateWithOwner:options:] + 1041
8 UIKit 0x0021cab7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 168
9 UIKit 0x000d2628 -[UIViewController _loadViewFromNibNamed:bundle:] + 70
10 UIKit 0x000d0134 -[UIViewController loadView] + 120
11 UIKit 0x000d000e -[UIViewController view] + 56
12 UIKit 0x000e2f54 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 120
13 UIKit 0x000e1aaa -[UITabBarController transitionFromViewController:toViewController:] + 64
14 UIKit 0x000e38a2 -[UITabBarController _setSelectedViewController:] + 263
15 UIKit 0x000e3711 -[UITabBarController _tabBarItemClicked:] + 352
16 UIKit 0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
17 UIKit 0x00222ce6 -[UITabBar _sendAction:withEvent:] + 422
18 UIKit 0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
19 UIKit 0x000b0799 -[UIControl sendAction:to:forEvent:] + 67
20 UIKit 0x000b2c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
21 UIKit 0x000b0750 -[UIControl sendActionsForControlEvents:] + 49
22 UIKit 0x000204fd -[UIApplication sendAction:to:from:forEvent:] + 119
23 UIKit 0x000b0799 -[UIControl sendAction:to:forEvent:] + 67
24 UIKit 0x000b2c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
25 UIKit 0x000b17d8 -[UIControl touchesEnded:withEvent:] + 458
26 UIKit 0x00044ded -[UIWindow _sendTouchesForEvent:] + 567
27 UIKit 0x00025c37 -[UIApplication sendEvent:] + 447
28 UIKit 0x0002af2e _UIApplicationHandleEvent + 7576
29 GraphicsServices 0x01007992 PurpleEventCallback + 1550
30 CoreFoundation 0x00daf944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
31 CoreFoundation 0x00d0fcf7 __CFRunLoopDoSource1 + 215
32 CoreFoundation 0x00d0cf83 __CFRunLoopRun + 979
33 CoreFoundation 0x00d0c840 CFRunLoopRunSpecific + 208
34 CoreFoundation 0x00d0c761 CFRunLoopRunInMode + 97
35 GraphicsServices 0x010061c4 GSEventRunModal + 217
36 GraphicsServices 0x01006289 GSEventRun + 115
37 UIKit 0x0002ec93 UIApplicationMain + 1160
38 Cypher Bot 0x00002889 main + 121
39 Cypher Bot 0x00002805 start + 53
40 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
sharedlibrary apply-load-rules all
Current language: auto; currently objective-c
(gdb)**
>
我在此之前对第三个视图控制器所做的更改是:
编辑: 我已经包含了头文件:
#import <UIKit/UIKit.h>
@interface ThirdViewController : UIViewController {
IBOutlet UIView *landscapeView;
IBOutlet UIView *portraitView;
}
@property (nonatomic, retain) IBOutlet UIView *landscapeView;
@property (nonatomic, retain) IBOutlet UIView *portraitView;
@end
@properties与@synthesize一起使用,项目中没有错误或警告。
编辑2:我删除了与portraitView和landscapeView相关的所有内容,现在当我运行它时,我点击更多,我得到以下内容:
**Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Spencer/Library/Application Support/iPhone Simulator/4.3.2/Applications/1E0A4C15-2143-442D-A8FC-4AE36CFC90E4/Cypher Bot.app> (loaded)' with name 'ThirdViewController.xib''**
我做错了什么?为什么我无法点击第三个标签?
任何帮助表示赞赏!谢谢!
答案 0 :(得分:4)
您的nib文件似乎尝试将某些内容绑定到UIViewController上名为portraitView
的插座,但UIViewController没有这样的属性。我猜你需要进入IB并将该视图控制器上的类更改为应用程序中应该使用的任何自定义UIViewController子类。
答案 1 :(得分:1)
这是我在Interface Builder中的观点。 “文件的所有者”应该设置为相应的视图控制器,在你的情况下,它应该在这里说“ThirdViewController”。确保链接到正确的视图控制器。
同时检查将此视图控制器添加到选项卡栏的代码。您是在初始化UIViewController还是在第三个ViewController中?确保它是一个ThirdViewController。
答案 2 :(得分:0)
在将界面构建器中的视图拖动到该变量之后,您可能已更改了代码中变量名的名称,从而导致此类错误。要解决此问题,您必须再将其拖回来,您可能在该属性的界面构建器中有一个解释标记。