2013-11-22 50 views
1

所以我想創建一個視圖,你可以通過左右掃描圖像。我已經能夠彈出一個空白頁面顯示我的標題,並識別滑動手勢(左或右),並根據需要創建indexToShow。但是,我無法看到我的任何圖像只是一個空白的屏幕。任何幫助,將不勝感激。Swipable圖像視圖

這裏是我做了什麼:

在.h文件中

UIImageView *myImageView; 
int indexToShow; 

在.m文件

@interface myController() 
@property (nonatomic, strong) NSMutableArray *imgArray; 
@end 
@implementation myController 
@synthesize imgArray; 

,然後我有

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 
imgArray = [[NSMutableArray alloc] initWithObjects:@"image1.png",@"image2.png",@"image3.png",@"image4.png", nil]; 
indexToShow = 0; 
UISwipeGestureRecognizer *gestureRight; 
UISwipeGestureRecognizer *gestureLeft; 
gestureRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self  action:@selector(swipeRight:)]; 
gestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)]; 
[gestureLeft setDirection:(UISwipeGestureRecognizerDirectionLeft)]; 
[[self view] addGestureRecognizer:gestureRight]; 
[[self view] addGestureRecognizer:gestureLeft]; 
myImageView.image = [imgArray objectAtIndex:indexToShow]; 
} 

- (void)swipeRight:(UISwipeGestureRecognizer *)gesture 
{ 
if ((gesture.state == UIGestureRecognizerStateChanged) || 
    (gesture.state == UIGestureRecognizerStateEnded)) { 

    if ((indexToShow-1) < -1) { 
     indexToShow = imgArray.count-1; 
    } 
    myImageView.image = [imgArray objectAtIndex:indexToShow]; 
    indexToShow--; 
} 
} 

- (void)swipeLeft:(UISwipeGestureRecognizer *)gesture 
{ 
if ((gesture.state == UIGestureRecognizerStateChanged) || 
    (gesture.state == UIGestureRecognizerStateEnded)) { 

    if ((indexToShow+1) > imgArray.count) { 
     indexToShow = 0; 
    } 
    myImageView.image = [imgArray objectAtIndex:indexToShow]; 
    indexToShow++; 
} 
} 

,然後在我的視角中,我有

[super viewWillAppear:animated]; 
self.title = @"Hi"; 
[self.view addSubview:tutorialImageView]; 
+0

更改'myImageView.image = [imgArray objectAtIndex:indexToShow];' with'myImageView.image = [UIImage imageName:[imgArray objectAtIndex:indexToShow]];'? – Larme

回答

0

我建議您使用UICollectionView,而不是爲了提高效率,但目前的問題有一個簡單的修復方法。當你創建你的數組時,你創建了一個字符串數組(文件名)。

imgArray = [[NSMutableArray alloc] initWithObjects:@"image1.png",@"image2.png",@"image3.png",@"image4.png", nil]; 

但是,當您訪問它時,您將採用此字符串(文件名)並將其設置爲圖像視圖的圖像。

myImageView.image = [imgArray objectAtIndex:indexToShow]; 

相反,你應該做的@Larme建議,並使用以下

myImageView.image = [UIImage imageName:[imgArray objectAtIndex:indexToShow]]; 

這將在數組中選擇索引創建的文件名一個UIImage,並將其設置爲圖像視圖的圖像。

+0

非常感謝。這樣做了tricvk隨着一些東西移動。對於有同樣問題的其他人,我還必須在viewwillappear方法中用其框架定義UIImageView。 – user3007080