【发布时间】:2014-06-20 04:56:11
【问题描述】:
我用 xib 文件创建了一个简单的 iPhone 应用程序,并在视图中添加了一个按钮。创建一个 IBOutlet 来连接它。每次,我启动它,它都会崩溃。完整的错误信息如下: 2014-05-03 08:10:19.742 test[1435:a0b] * 由于未捕获的异常而终止应用程序
'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: 这个类对于键 txtBtn 不符合键值编码。'
有很多人打这个问题,在查看答案后,我认为我的问题是不同的。 代码如下。
#import <UIKit/UIKit.h>
@interface XIBViewController : UIViewController
{
UIButton *txtBtn;
}
@property (nonatomic, retain) IBOutlet UIButton *txtBtn;
@end
创建此视图控制器的来源:
- (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>
【问题讨论】:
-
整个错误信息是什么?它应该说它在抱怨 哪个 键。
-
用更多信息更新帖子。谢谢。
-
这个错误通常是因为你搞砸了一个 XIB 到类的映射——你将 XIB 链接到一个不包含
txtBtn方法的类。 (编译器是否警告你你没有合成 txtBtn?) -
我已经发布了一个应该可以解决问题的答案...但出于好奇,既然您显然是在开始一个新项目而不是维护遗留代码,那么您为什么不使用情节提要?
-
学习新东西。
标签: ios xib key-value-coding