【发布时间】:2012-01-26 15:29:32
【问题描述】:
绝对是初学者的问题。我正在尝试制作一个应用程序,该应用程序将通过侧向滑动屏幕来切换一组图像。所以,作为一个普通的例子,我试图首先显示一个图像,然后考虑如何使用一个动作在图像之间切换。我正在使用 XCode 4.2。
所以,这就是我目前所拥有的。我在故事板中添加了一个 UIImageView,然后 Ctrl+拖动到“.h”文件中以创建一个 Outlet,它看起来像这样:
SwitchViewController.h
#import <UIKit/UIKit.h>
@interface SwitchViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
然后在“.m”文件中,我尝试在 DidLoad 方法中为 UIImageView 设置图像。
SwitchViewController.m
#import "SwitchViewController.h"
@implementation SwitchViewController
@synthesize imageView;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *plate1 = [UIImage imageNamed:@"plates1.tif"];
[imageView setImage:plate1];
}
- (void)viewDidUnload
{
[self setImageView:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ((interfaceOrientation == UIInterfaceOrientationLandscapeRight) ||
(interfaceOrientation == UIInterfaceOrientationLandscapeLeft))
return YES;
return NO;
}
@end
现在,如果我尝试运行它,则不会出现编译错误。
但程序停止说,线程 1:程序收到信号“SIGABRT”
【问题讨论】:
-
可能抛出异常。你能告诉我们Xcode控制台上的输出吗?
-
IBOutlet 是否连接到 .xib 中的
UIImageView?你也应该使用[self.imageView setImage:plate1]; -
非常感谢,@mattjgalloway。控制台是这样的。 2012-01-26 22:04:40.728 Switch-a-Switch[548:f803] *** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[
setValue:forUndefinedKey:]:这个类是不符合键 UIImageView 的键值编码。' -
@basvk:谢谢。我确实将 Outlet 从情节提要拖到了界面上。抱歉,我对 XCode 和 Objective C 非常陌生。我可以看到 .storyboard 文件,但找不到 .xib 文件。我将 [imageView.setImage:plate1] 更改为 [self.imageView.setImage:plate1]。
-
@AshinMandal 查看我的答案 - 您正在尝试设置名为
UIImageView的键。您一定是在 IB 中弄错了链接。
标签: objective-c ios5 uiimageview xcode4.2