我已经为我的 ios 应用程序创建了一个幻灯片抽屉。幻灯片抽屉工作得很好......我在幻灯片抽屉中有几个按钮和一个文本框......问题是每当我尝试添加对按钮/文本框的引用时在幻灯片抽屉中,我收到 NSUnknownKeyException ......我不知道如何解决这个问题,因为我在 IO 中非常新......我包括下面的代码......
SlideDrawer.h
#import <UIKit/UIKit.h>
@interface SlideDrawer : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *home;
- (IBAction)homeclick:(id)sender;
@end
SlideDrawer.m
#import "SlideDrawer.h"
@interface SlideDrawer ()
@end
@implementation SlideDrawer
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)homeclick:(id)sender {
}
@end
主视图控制器.h
#import <UIKit/UIKit.h>
@interface mainViewController : UIViewController{
UIView *menuDrawer;
}
@property (readonly, nonatomic) UISwipeGestureRecognizer *recognizer_open, *recognizer_close;
@property (readonly, nonatomic) int menuDrawerX, menuDrawerWidth;
-(void) handleSwipes:(UIGestureRecognizer *) sender;
-(void) drawerAnimation;
@end
主视图控制器.m
#import "mainViewController.h"
@interface mainViewController ()
@end
@implementation mainViewController
@synthesize menuDrawerWidth, menuDrawerX,recognizer_open, recognizer_close;
- (void)viewDidLoad {
[super viewDidLoad];
menuDrawer = [[[NSBundle mainBundle] loadNibNamed:@"SlideDrawer" owner:self options:nil]objectAtIndex:0];
menuDrawer.backgroundColor= [UIColor colorWithRed:0.18 green:0.09 blue:0.29 alpha:1.0];
menuDrawerWidth= self.view.frame.size.width * 0.80;
int statusbarHeight= [UIApplication sharedApplication].statusBarFrame.size.height;
menuDrawerX= self.view.frame.origin.x- menuDrawerWidth;
menuDrawer.frame= CGRectMake(menuDrawerX, menuDrawer.frame.origin.y+statusbarHeight, menuDrawerWidth, self.view.frame.size.height-statusbarHeight);
// menuDrawer.backgroundColor=[UIColor colorWithRed:0.18 green:0.09 blue:0.29 alpha:1.0];
recognizer_close= [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
recognizer_open= [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
recognizer_close.direction= UISwipeGestureRecognizerDirectionLeft;
recognizer_open.direction= UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:recognizer_open];
[self.view addGestureRecognizer:recognizer_close];
[self.view addSubview:menuDrawer];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void) handleSwipes:(UIGestureRecognizer *) swipe{
[self drawerAnimation];
}
-(void) drawerAnimation{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:-10];
CGFloat new_x = 0;
if(menuDrawer.frame.origin.x<self.view.frame.origin.x)
{
new_x= menuDrawer.frame.origin.x+menuDrawerWidth;
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:menuDrawer.bounds];
menuDrawer.layer.masksToBounds = NO;
menuDrawer.layer.shadowColor = [UIColor blackColor].CGColor;
menuDrawer.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);
menuDrawer.layer.shadowOpacity = 0.5f;
menuDrawer.layer.shadowPath = shadowPath.CGPath;
[self.view removeGestureRecognizer:recognizer_open];
[self.view addGestureRecognizer:recognizer_close];
}
else{
new_x= menuDrawer.frame.origin.x-menuDrawerWidth;
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:menuDrawer.bounds];
menuDrawer.layer.masksToBounds = NO;
menuDrawer.layer.shadowColor = [UIColor blackColor].CGColor;
menuDrawer.layer.shadowOffset = CGSizeMake(0.0f, 1.0f);
menuDrawer.layer.shadowOpacity = 0.0f;
menuDrawer.layer.shadowPath = shadowPath.CGPath;
[self.view removeGestureRecognizer:recognizer_close];
[self.view addGestureRecognizer:recognizer_open];
}
menuDrawer.frame= CGRectMake(new_x, menuDrawer.frame.origin.y, menuDrawer.frame.size.width, menuDrawer.frame.size.height);
[UIView commitAnimations];
}
@end
编辑
例外是 main.m 中的行
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
例外
2015-06-10 14:07:17.357 Xpressions[5939:1056267] Unknown class ViewController in Interface Builder file. 2015-06-10 14:07:17.367
Xpressions[5939:1056267] * 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合密钥主页的键值编码。” *第一次抛出调用堆栈:(0 CoreFoundation 0x0089e746 exceptionPreprocess + 182 1 libobjc.A.dylib
0x00527a97 objc_exception_throw + 44 2 CoreFoundation
0x0089e361 -[NSException raise] + 17 3 Foundation
0x001a81ee -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 2基础 0x00105608 _NSSetUsingKeyValueSetter + 115 5 基础 0x0010558d -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267 6
基础 0x0013b016 -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 386 7 UIKit 0x00fa8672 -[UIRuntimeOutletConnection connect] + 106 8
libobjc.A.dylib 0x0053d724 -[NSObject performSelector:] + 62 9 CoreFoundation
0x007d647c +[NSArray makeObjectsPerformSelector:] 316 10 UIKit
0x00fa7133 -[UINib instantiateWithOwner:options:] + 1775 11 UIKit
0x00fa8fd2 -[NSBundle(UISBundleAdditions) loadNibNamed:owner:options:] + 180 12 Xpressions
0x000418cf -[mainViewController viewDidLoad] + 175 13 UIKit
0x00Ifdc4[UI1daViewController-IfdRequire] + 771 14 UIKit
0x00dc2095 -[UIViewController 视图] + 35 15 UIKit
0x00cb3e85 -[UIWindow addRootViewControllerViewIfPossible] + 66 16 UIKit 0x00cb434c -[UIWindow _setHidden:forced:] + 287 17 UIKit 0x00cb4648 -[UIWindow _orderFrontWithoutMakingKey] + 49 18 UIKit
0x00cc29b6 -[UIWindow0 makeKeypressAndVisible] + 88
0x00043534 -[AppDelegate application:didFinishLaunchingWithOptions:] + 580 20 UIKit 0x00c56fd7 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 287 21 UIKit 0x00c57dc1 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2938 22 UIKit 0x00c5b422 -[UIApplication _runWithMainScene:transitionContext:completion :] + 1639 23 UIKit 0x00c7493e __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke + 59 24 UIKit 0x00c5a04a -[UIApplication workspaceDidEndTransaction:] + 155 25 FrontBoardServices 0x03200c9e __37-[FBSWorkspace 客户端]_block_invoke_2 + 71 26 前板服务
0x0320072f __40-[FBSWorkspace _performDelegateCallOut:]_block_invoke + 54 27 FrontBoardServices 0x03212d7c __31-[FBSSerialQueue performAsync:]_block_invoke_2 + 30 28 CoreFoundation 0x007c0050 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK + 16 29 CoreFoundation 0x007b5963 __CFRunLoopDoBlocks + 195 30 CoreFoundation
0x007b57bb __CFRunLoopRun + 2715 31 CoreFoundation
0x007b4a5b CFRunLoopRunSpecific + 443 32 CoreFoundation
0x007b488b CFRunLoopRunInMode + 123 33 UIKit
0x00c59a02 -[UIApplication_run] + 571 34 UIKit
0x00c5d106 UIApplicationMain + 1526 35 Xpressions
0x00043a0a main + 138 36 libdyld.dylib
0x02c2aac9 start + 1 ) libc++abi.dylib: 以 NSException 类型的未捕获异常终止