Как отобразить изображение с помощью UIView в XCode? - PullRequest
3 голосов
/ 26 января 2012

Абсолютно новичок в вопросе. Я пытаюсь сделать приложение, которое будет переключать массив изображений, проводя по экрану вбок. Итак, в качестве ванильного случая я сначала пытался отобразить изображение, а затем подумал о том, как переключаться между изображениями с помощью действия. Я использую XCode 4.2.

Итак, вот что у меня есть. Я добавил UIImageView в свою раскадровку, затем Ctrl + перетащил в файл ".h", чтобы создать Outlet, и он выглядит примерно так:

SwitchViewController.h

#import <UIKit/UIKit.h>

@interface SwitchViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *imageView;


@end

А затем в файле ".m" я пытаюсь установить изображение для UIImageView в методе DidLoad.

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"

Ответы [ 4 ]

1 голос
/ 26 января 2012

Ссылаясь на вашу реальную проблему, вы получаете это исключение:

2012-01-26 22:04:40.728 Switch-a-Switch[548:f803] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<SwitchViewController 0x6840660> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key UIImageView.'

Может показаться, что вы подключили UIImageView к свойству с именем UIImageView, а не imageView. Перейдите и повторите соединение в Интерфейсном Разработчике и убедитесь, что вы перетаскиваете из свойства imageView в свой экземпляр UIImageView.

1 голос
/ 26 января 2012
UIImage *plate1 = [UIImage imageNamed:@"plates1.tif"];
[imageView setImage:plate1]; 

должен быть кошерным в iOS и 64-битных (не хрупкие среды ABI, так как iVar будет синтезирован), я думаю, что будет гораздо лучше включить ивар в интерфейс ....

@interface SwitchViewController : UIViewController
{
    UIImageView *imageView;
}

Чтобы отследить это, вам нужно включить зомби и включить точку останова исключения.

0 голосов
/ 26 января 2012

Я думаю, вы можете поступить неправильно. Если вы хотите перемещаться между изображениями в стороны, вам следует использовать UIScrollView с включенной подкачкой страниц. Быстрый гугл придумал это .

Надеюсь, что поможет

0 голосов
/ 26 января 2012

всего нового. (сейчас я только учусь сам, поэтому могу ошибаться, но здесь идет)

при использовании @property u следует использовать установщик self.imageView, чтобы назначить его. поэтому [imageView setImage: plate1] станет self.imageView.image = plate1. и изменить его со слабого, чтобы сохранить в .h. и в viewdidunload сделайте self.imageView = nil. Также я думаю, что эффект смахивания изображений, который вы пытаетесь достичь, может быть лучше подходит для горизонтальной прокрутки. и вы можете включить пейджинг или что-то для этого. Надеюсь, что это поможет и не отправит вас в совершенно неверном направлении: P

...