简单的应用程序错误“这个类不是关键值编码兼容的关键”

我用xib文件创build一个简单的iPhone应用程序,并添加一个button到视图。 创build一个IBOutlet来连接它。 每一次,我启动它,它会崩溃。 完整的错误信息如下:2014-05-03 08:10:19.742testing[1435:a0b] *终止应用程序,由于未捕获的exception

'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:这个类不是密钥txtBtn的编码兼容密钥值。

有很多人打这个问题,在回顾了答案后,我认为我的问题是不同的。 代码如下。

#import <UIKit/UIKit.h> @interface XIBViewController : UIViewController { UIButton *txtBtn; } @property (nonatomic, retain) IBOutlet UIButton *txtBtn; @end 

创build这个视图控制器的来源:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; UIViewController *controller = [[UIViewController alloc] initWithNibName:@"XIBViewController" bundle:[NSBundle mainBundle]]; self.window.rootViewController = controller; return YES; } 

xib文件的来源是

 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/> </dependencies> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="XIBViewController"> <connections> <outlet property="txtBtn" destination="kvg-9r-q01" id="Xtc-tf-xGb"/> <outlet property="view" destination="1" id="l1j-Dp-A65"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view contentMode="scaleToFill" id="1"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kvg-9r-q01"> <rect key="frame" x="103" y="158" width="79" height="30"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <state key="normal" title="Hello World"> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> </state> </button> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/> <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/> </view> </objects> </document> 

你已经创build了一个没有txtBtn属性的UIViewController对象。

你需要改变这一行:

 UIViewController *controller = [[UIViewController alloc] initWithNibName:@"XIBViewController" bundle:[NSBundle mainBundle]]; 

对此:

 XIBViewController *controller = [[XIBViewController alloc] initWithNibName:@"XIBViewController" bundle:[NSBundle mainBundle]]; 

你还需要#import XIBViewContoller.h在你的AppDelegate中#import XIBViewContoller.h