0

私はこのサイトの多くの投稿だけでなく、Google の他の多くの投稿も見てきました。私は iOS が初めてで、他の投稿を間違って読んでいる可能性が高いです。私は自分のロジックと試行で自分のコードを学び、記述しようとしているので、私のものは私が見つけた他のものとはかなり異なっているように見えます...それがうまくいかない理由です!

右から左へのスワイプを使用して画像ショーを取得しようとしていますが、ここで行ったインスタントスイッチの代わりに、次の画像を引っ張って所定の位置にスライドさせたい. 多くの推奨事項に基づいて、UIScrollView を使用しようとしています。何もロードできず、loadImages の最後の行でアプリがクラッシュします。デバッグしましたが、サブビューが表示されない理由がわかりません。

これが私のviewDidLoadです:

    [super viewDidLoad];
// Do any additional setup after loading the view.
i = 0;
//add UIPanGestureRecognizer
UIPanGestureRecognizer *aPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(loadImages)];
[aPan setMaximumNumberOfTouches:1];
[aPan setMinimumNumberOfTouches:1];
[self.view addGestureRecognizer:aPan];


_PhotoBundle = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg"inDirectory:@"Otter_Images"];

_PhotoArray = [[NSMutableArray alloc] initWithCapacity:_PhotoBundle.count];
for (NSString* path in _PhotoBundle)
{
    [_PhotoArray addObject:[UIImage imageWithContentsOfFile:path]];
}

[self loadImages];

これが私のloadImagesです:

-(void)loadImages

{ NSLog(@"in loadImages");

_currentImage = [_PhotoArray objectAtIndex:i];
_nextImage = [_PhotoArray objectAtIndex:i + 1];
_prevImage = [_PhotoArray objectAtIndex:i -1];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[scrollView setScrollEnabled:YES];
[scrollView setClipsToBounds:YES];

if (i <= _PhotoArray.count)
{
    [scrollView addSubview:_currentImage]; ////crash!!!!
}
else
{
    _currentImage = [_PhotoArray objectAtIndex:0];
    [scrollView addSubview:_currentImage]; /// Crash!!!!
}

NSLog(@"end of loadImages");

}

1 つのイメージをロードできるようになるまで、機能を中断しました。次に、スライドの機能を追加します....これに近づいていることを願っています。

助けてくれてありがとうございました!!

編集:

ImageViews を設定する .m のインターフェイスは次のとおりです。

@interface ScrollViewViewController ()

@property (nonatomic, retain) NSArray *PhotoBundle;
@property (nonatomic, retain) NSMutableArray *PhotoArray;
@property (nonatomic, retain) UIImageView *currentImage;
@property (nonatomic, retain) UIImageView *nextImage;
@property (nonatomic, retain) UIImageView *prevImage;

@end
4

1 に答える 1

1

UIImageオブジェクトをサブビューとして追加しています。これはできません。最初に作成する必要がありますUIImageView-サブビューとして追加できるのは UIView サブクラスのみです。

画像ビューの作成は簡単ですalloc/initWithImage:。画像オブジェクトを渡すことができます。各画像ビューのフレームを調整する必要があります。そうしないと、すべてが重なり合ってしまいます。

さらに、スクロール ビューを使用している場合は、パン ジェスチャ レコグナイザーは必要ありません。スクロール ビューがこれを処理します。

于 2012-10-26T21:29:08.810 に答える