1

これをコーディングする方法はわかりませんが、プログラムでこのステートメントの実行をスキップまたはジャンプさせたい

self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                  target:self
                                                selector:@selector(displayviewsAction:)
                                                userInfo:nil
                                                 repeats:NO];

再生を再開するために一時停止が押されたとき。

再生/一時停止ボタンでこの原因が必要な理由は、一時停止を押して再開する場合を除いて、すべてが良好です。以下のコードからこのステートメントを実行することにより、ビューコントローラーのリロードを開始します

self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                  target:self
                                                selector:@selector(displayviewsAction:)
                                                userInfo:nil
                                                 repeats:NO];

この問題を解決するためにさまざまな方法を試しましたが、何もうまくいきません。

 if([audioPlayer isPlaying]){
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
    [audioPlayer pause];
    [self pauseTimer];
}else {
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [audioPlayer play];
    [self resumeTimer];
    self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                  target:self
                                                selector:@selector(displayviewsAction:)
                                                userInfo:nil
                                                 repeats:NO];

それがView Controllerを次々とロードする方法です

- (void)displayviewsAction:(id)sender
 {  
  First *firstController = [[First alloc] init];
  firstController.view.frame = CGRectMake(0, 0, 320, 480);
  CATransition *transitionAnimation = [CATransition animation];   
  [transitionAnimation setDuration:1];
  [transitionAnimation setType:kCATransitionFade];
  [transitionAnimation setTimingFunction:[CAMediaTimingFunction       functionWithName:kCAMediaTimingFunctionEaseIn]];
  [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFade];
  [self.view addSubview:firstController.view];
  [self.view addSubview:toolbar];
  [firstController release];
  self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];  
  }

  -(void)Second 
  {
   Second *secondController = [[Second alloc] init];
   secondController.view.frame = CGRectMake(0, 0, 320, 480);
   CATransition *transitionAnimation = [CATransition animation];
   [transitionAnimation setDuration:1];
   [transitionAnimation setType:kCATransitionReveal];
   [transitionAnimation setTimingFunction:[CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionEaseIn]];
   [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionReveal];
   [self.view addSubview:secondController.view]; 
   [self.view addSubview:toolbar];
   [secondController release];
   self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(Third) userInfo:nil repeats:NO];
    }

これは、この問題の解決策を見つけることができるかどうかを確認する最後の試みです。この問題に 2 週間費やしましたが、成功しませんでした。

誰かが私のこの問題を解決できれば。

助けてくれてどうもありがとう。

4

1 に答える 1

1

少し複雑な解決策を見つけました。.hファイルにBOOL isFirstTime; int methodSelector;. 実装ファイルで:

-(void)viewDidLoad
{
 isFirstTime = YES;
 methodSelector = 1;
}

次のようにコードを変更します。

if([audioPlayer isPlaying])
{
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
    [audioPlayer pause];
    [self pauseTimer];
}
else
{
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [audioPlayer play];
    [self resumeTimer];
switch(methodSelector)
{
 case 1:self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                              target:self
                                            selector:@selector(displayviewsAction:)
                                            userInfo:nil
                                             repeats:NO];
 break;
 case 2:self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];
 break;
 .
 .
 .


 }
}
if(isFirstTime == YES)
{
    self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                                  target:self
                                                selector:@selector(displayviewsAction:)
                                                userInfo:nil
                                                 repeats:NO];
isFirstTime  = NO;
}

methodSelectorそれに応じてビューを変更するメソッドを設定します。Secondメソッドでは 2 として設定Thirdし、3 として設定します。

- (void)displayviewsAction:(id)sender
 {  
  First *firstController = [[First alloc] init];
  firstController.view.frame = CGRectMake(0, 0, 320, 480);
  CATransition *transitionAnimation = [CATransition animation];   
  [transitionAnimation setDuration:1];
  [transitionAnimation setType:kCATransitionFade];
  [transitionAnimation setTimingFunction:[CAMediaTimingFunction       functionWithName:kCAMediaTimingFunctionEaseIn]];
  [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionFade];
  [self.view addSubview:firstController.view];
  [self.view addSubview:toolbar];
  [firstController release];
methodSelector = 2;
  self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];  
  }

  -(void)Second 
  {
   Second *secondController = [[Second alloc] init];
   secondController.view.frame = CGRectMake(0, 0, 320, 480);
   CATransition *transitionAnimation = [CATransition animation];
   [transitionAnimation setDuration:1];
   [transitionAnimation setType:kCATransitionReveal];
   [transitionAnimation setTimingFunction:[CAMediaTimingFunction     functionWithName:kCAMediaTimingFunctionEaseIn]];
   [self.view.layer addAnimation:transitionAnimation forKey:kCATransitionReveal];
   [self.view addSubview:secondController.view]; 
   [self.view addSubview:toolbar];
   [secondController release];
methodSelector = 3;
   self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(Third) userInfo:nil repeats:NO];
    }

methodSelector一時停止後にメソッドを呼び出すために使用されます。

于 2012-06-18T19:17:12.677 に答える