带有 UIImagePickerController 的 NSException
Posted
技术标签:
【中文标题】带有 UIImagePickerController 的 NSException【英文标题】:NSException with UIImagePickerController 【发布时间】:2014-05-17 12:38:30 【问题描述】:我正在 Xcode 5 中构建我的第一个 ios 7 iPad 应用程序 - 但我需要一些帮助来解决这个问题。
我正在关注this 教程:
我不太明白作者的意思: “所以打开 testPickerViewController.h,我们要在类引用中添加以下内容。”
UINavigationControllerDelegate, UIImagePickerControllerDelegate>
我在这里得到了我的 view controller.h 文件:
#import "ViewController.h"
@interface DetailViewController : ViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
UIImagePickerController *imgPicker;
IBOutlet UIImageView *customImage;
@property(nonatomic, retain)UIImagePickerController *imgPicker;
@end
我的视图控制器.m 文件:
#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
@synthesize imgPicker, customImage;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
return self;
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view.
// Init the image picker
self.imgPicker = [[UIImagePickerController alloc]init];
self.imgPicker.allowsEditing = YES;
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
*/
- (IBAction)AddImage:(id)sender
// Let the user add an image for the specific subject
[self presentModalViewController:self.imgPicker animated:YES];
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editingInfo
customImage.image = img;
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
@end
我运行应用程序时没有执行我在顶部写的操作,这导致 main.m 文件中出现 NSException。
我在这里做错了什么?
编辑
main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[])
@autoreleasepool
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
编辑
2014-05-17 14:56:47.509 myApp[1424:60b] * 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:这个类是不符合关键图像的关键值编码。'
【问题讨论】:
而异常信息是...? 以 NSException 类型的未捕获异常终止 在这种情况下,您是否设置了断点并检查了哪一行导致异常? “终止”,是的,但它也应该告诉你异常的描述。 在哪里?你看,我对 Xcode 完全陌生 :) 【参考方案1】:在 Interface Builder (IB) 中检查 IBOutlet customImage
的连接,并确保引用插座的名称和 UIImageView 匹配。您可以通过单击 IB 中的 Connection Inspector 进行检查(它是一个圆圈内的小箭头)。
在您发布链接的教程中,IBOutlet UIImageView
声明为 image
。我假设您更改了 IBOutlet 的名称并忘记重新连接它。您还可以通过检查属性声明旁边的点是填充还是空来检查IBOutlet customImage
是否已连接。填充 = 已连接,空 = 未连接。
IBOutlet 的属性声明示例:
@property (weak, nonatomic) IBOutlet UIImageView * customImage;
另外,<UINavigationControllerDelegate, UIImagePickerControllerDelegate>
是协议。通过将这些行添加到@interface
声明中,您可以非常简单地声明“我希望我的UIViewController
符合UINavigationControllerDelegate
和UIImagePickerControllerDelegate
。我还想在某些事件发生时实现我自己的代码发生。”
【讨论】:
我检查了链接,它是正确的。我稍微更改了我的 .h 代码,请参阅我的更新 我从 ImageView 中删除了图片链接,突然它起作用了 太棒了。我很高兴现在一切都对你有用。继续阅读教程,你就会掌握窍门。 我一定会的:)谢谢你的帮助!以上是关于带有 UIImagePickerController 的 NSException的主要内容,如果未能解决你的问题,请参考以下文章
ViewController 生命周期 UINavigationController
如何从 webview 使用 UIImagePickerController
iPhone OS 3.0 中的 UIImagePickerController
如何使用 iphone 中的核心数据将图像存储到 sqlite? [复制]
带有多个链接的 NSAttributedString 的 UILabel,带有行限制,显示尾部截断,带有未见文本的 NSBackgroundColorAttributeName