0

以下のコードが機能しない理由がわかりません...

UIImageView を持つ単純な UIViewController があり、ユーザーが右または左にスワイプした場合に画像を変更したいと考えています。私はiPhone開発に不慣れです。

ありがとう

#import "SummerViewController.h"


@implementation SummerViewController

//@synthesize scroll;
@synthesize imgClothes, images;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}


-(void)LeftSwiped
{
    NSLog(@"swiped left");
    imgClothes.image = [UIImage imageNamed:[images objectAtIndex:0]];

}

-(void)RightSwiped
{
    NSLog(@"swiped right");
    imgClothes.image = [UIImage imageNamed:[images objectAtIndex:1]];
}

- (void)viewDidLoad
{

    images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.jpg"],
                       [UIImage imageNamed:@"2.jpg"], nil];

    UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(LeftSwiped)];

    swipeLeft.numberOfTouchesRequired = 1;
    swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
    [self.view addGestureRecognizer:swipeLeft];

    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(RightSwiped)];

    swipeRight.numberOfTouchesRequired = 1;
    swipeRight.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:swipeRight];





    [super viewDidLoad];


}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

.h ファイル:

@interface SummerViewController : UIViewController
{
    //IBOutlet UIScrollView *scroll;
    IBOutlet UIImageView *imgClothes;
    NSArray *images;
}

@property (nonatomic, retain) IBOutlet UIImageView *imgClothes;
@property (nonatomic, retain) IBOutlet NSArray *images;

@end
4

3 に答える 3

1
  1. どこから始めているのかわかりませんUIImageView *imgClothes。あなたは次のようなものを書くべきですimgClothes = [[UIImageView alloc] init(...)];
  2. 私はUISwipeGestureRecognizerを使用していませんでしたが、.hファイルに次のように書き込む必要がある場合があります。@interface SummerViewController : UIViewController <UIGestureRecognizerDelegate>
  3. initWithNibNameでではなく、で初期化を行うことをお勧めしますViewDidLoad。しかし、これが問題の原因になることはありません。
于 2012-05-06T02:41:11.603 に答える
1

UIImageViewの画像を変更するためのコードはすべて正しいです。コードスニペットによると、2つのシナリオが見つかりました

1.XIBからimgClothesにIBOutlet参照を追加してください
。2。「1」ポイントが適合している場合は、 self.viewに追加されているimgClothes参照を確認してください。

上記の2つのシナリオで問題が解決することを願っています。幸運を祈ります。

于 2012-05-06T02:44:14.847 に答える
1

一つ忘れないで

1) swipeRight.delegate = self;// デリゲートをスワイプ オブジェクトに割り当てます。

SDK 3.2 以降を使用している場合、これは UIGestureRecognizer クラスを使用すると非常に簡単です。それ以外の場合は、スワイプ検出の次のリファレンスにアクセスしてください

https://gist.github.com/791725

うまくいけば、これはあなたを助けるでしょう..

于 2012-05-06T02:46:34.460 に答える