以编程方式连接两个UIButtons

时间:2012-07-12 22:00:24

标签: iphone uibutton

以编程方式使用playButton连接rewindButton。 rewindButton只是从头开始重写和播放,playButton从播放切换到暂停。在rewindButton方法中使用语句在按下UIButton1时更改UIButton2的UIImage。这很好。

按下并暂停播放按钮时,PlayButton方法正常工作。即使恢复工作正常。

问题简报:

当按下rewindButton时,它会将playButton的UIImage更改为PauseImage,以便用户可以暂停。恢复暂停时出现问题。 When pause is resumed it is reloading view controllers.它应该仅按照代码第一次加载viewcontrollers。

-(void)rewind:(id)sender{
audioPlayer.currentTime = 0;
[timer invalidate];
ContainerViewController *viewController = [[[ContainerViewController alloc] init]autorelease];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view]; 
[self.view addSubview:toolbar];
[audioPlayer play];
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                    target:self
                                    selector:@selector(displayviewsAction:)
                                    userInfo:nil
                                    repeats:NO];
    [_playButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];   
 }



-(void)playpauseAction:(id)sender {

if([audioPlayer isPlaying])
{
    [sender setImage:[UIImage imageNamed:@"Play Icon.png"] forState:UIControlStateSelected];
    [audioPlayer pause];
    [self pauseTimer];
    [self pauseLayer:self.view.layer];

}else{
    [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
    [audioPlayer play];
    [self resumeTimer];
    [self resumeLayer:self.view.layer];

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

- (void)displayviewsAction:(id)sender
{  

 First *first = [[First alloc] init];
 first.view.frame = CGRectMake(0, 0, 320, 425);
 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:first.view];
 [first release];   
 self.timer = [NSTimer scheduledTimerWithTimeInterval:23 target:self selector:@selector(Second) userInfo:nil repeats:NO];     
 }

-(void)Second 
{
Second *second = [[Second alloc] init];
second.view.frame = CGRectMake(0, 0, 320, 425);
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:second.view]; 
[second release];
self.timer = [NSTimer scheduledTimerWithTimeInterval:27 target:self selector:@selector(Third) userInfo:nil repeats:NO];
}

1 个答案:

答案 0 :(得分:0)

原因是它在重新启动原因后重新加载视图控制器因为我忘了添加isFirstTime == YES来加载视图控制器。 Viewcontrollers不需要重新加载。 Viewcontrollers只需要第一次从头开始加载。

因此,在rewind方法中设置isFirstTime == YES的值之后,它现在不会从暂停后重新加载视图控制器。

-(void)rewind:(id)sender{
audioPlayer.currentTime = 0;
[timer invalidate];
ContainerViewController *viewController = [[[ContainerViewController alloc] init]autorelease];
viewController.view.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:viewController.view]; 
[self.view addSubview:toolbar];
[audioPlayer play];
if(isFirstTime == YES){
self.timer = [NSTimer scheduledTimerWithTimeInterval:11.0
                                target:self
                                selector:@selector(displayviewsAction:)
                                userInfo:nil
                                repeats:NO];
 isFirstTime  = NO;
}

[_playButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];   
 }

现在工作正常。