3

私はIOSが初めてなので、この質問のガイドを手伝ってください。

scroll viewと で接続された 3 つの異なる画像を開く 3 つのビューに取り組んでいますpagination。ページネーション ロジックとスクロール ビューを取得するためにXIBを使用しています。

私は2つの問題に直面しています:

  1. 異なるビューでページ インジケーターを画面に表示することができません

  2. 3 番目のビューに到達すると、次のビュー コントローラーに移動するのが難しいと感じています。

Ray Wanderlich によるこのチュートリアルに従っています。ユーザーが最後のページに到達したときに次のページにスワイプしようとすると、次のView Controllerに移動するコードをどこに追加するかがわかりません。

私のコードは次のようなものです:

- (void)viewDidLoad {
[super viewDidLoad];


   self.navigationController.navigationBarHidden =YES;
// Set up the image we want to scroll & zoom and add it to the scroll view
self.pageImages = [NSArray arrayWithObjects:
                   [UIImage imageNamed:@"IMAGE1.png"],
                   [UIImage imageNamed:@"IMAGE2.png"],
                   [UIImage imageNamed:@"IMAGE3.png"],
                  // [UIImage imageNamed:@"photo4.png"],
                  // [UIImage imageNamed:@"photo5.png"],
                   nil];

NSInteger pageCount = self.pageImages.count;

// Set up the page control
self.pageControl.currentPage = 0;
self.pageControl.numberOfPages = pageCount;

// Set up the array to hold the views for each page
self.pageViews = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < pageCount; ++i) {
    [self.pageViews addObject:[NSNull null]];
}

}

- (void)loadVisiblePages {
// First, determine which page is currently visible
CGFloat pageWidth = self.scrollView.frame.size.width;
NSInteger page = (NSInteger)floor((self.scrollView.contentOffset.x * 2.0f + pageWidth) / (pageWidth * 2.0f));

// Update the page control
self.pageControl.currentPage = page;

NSLog(@"One %d",page);

if (page == 2) {

    page = 3;

    if(page == 3){
         NSLog(@"Working");

        SignInViewController *view = [[SignInViewController alloc]initWithNibName:@"SignInViewController" bundle:nil];
        [self.navigationController pushViewController:view animated:NO];
        [view release];
        view=nil;
    }

}

// Work out which pages we want to load
NSInteger firstPage = page - 1;
NSInteger lastPage = page + 1;

// Purge anything before the first page
for (NSInteger i=0; i<firstPage; i++) {
    [self purgePage:i];
}


    // Load pages in our range
for (NSInteger i=firstPage; i<=lastPage; i++) {
    [self loadPage:i];


}


    // Purge anything after the last page
for (NSInteger i=lastPage+1; i<self.pageImages.count; i++) {
    [self purgePage:i];

}

}

ビューコントローラーの行を次のように追加しようとしました:

SignInViewController *view = [[SignInViewController alloc]initWithNibName:@"SignInViewController" bundle:nil];
            [self.navigationController pushViewController:view animated:NO];
            [view release];
            view=nil; 

SignInViewしかし、これにより 3 番目の画像が消え、ユーザーが 2 番目の画像から 3 番目の画像にスワイプしようとすると、ユーザーはコントローラー ページに直接移動します。

ユーザーに3番目の画像を表示させ、スワイプを検出してアニメーションで次のView Controllerに移動するにはどうすればよいですか。スワイプアニメーションと検出を試しましたが、うまくいきませんでした。どこでコーディングする必要があり、どのように助けてください!!.

4

1 に答える 1

1

返信が遅くなるかもしれませんが、まだ問題があり、助けが必要な場合は、2 番目の問題の解決策を以下に示します。

パート2への回答.->

このコードを追加してみてください

if (page == 2) {

    page = 3;

    if(page == 3){

        NSLog(@"content ofset--  %f",self.scrollView.contentOffset.x);

        if (self.scrollView.contentOffset.x>=700)
        {
            SignIn2ViewController *view = [[SignIn2ViewController alloc]initWithNibName:@"SignIn2ViewController" bundle:nil];
            [self.navigationController pushViewController:view animated:NO];
            [view release];
            view=nil;
        }

    }
}

必要に応じて、オフセットの値を確認できます。これはあなたにとってうまくいくかもしれません。

--> Ray Wanderlich のチュートリアルをもう一度読み、XIB の設定を確認してください。コンセントやページ インジケーターに追加する情報をスキップした可能性があります。

それがうまくいくことを願っています。

于 2013-04-26T07:28:21.560 に答える