Как я могу создать двойную функциональную кнопку? - PullRequest
0 голосов
/ 16 марта 2011

У меня есть приложение, в котором есть кнопка запуска (с изображением воспроизведения).после нажатия кнопки «Пуск» при следующем щелчке она должна действовать как кнопка паузы (также изменение изображения кнопки).Как мы можем реализовать эту функцию, изменяя изображение для воспроизведения одной, а другой для паузы одной и той же кнопкой?

Ответы [ 6 ]

4 голосов
/ 16 марта 2011

Вот как я бы с этим справился

В вашем определении viewController определите bool

BOOL playing;

, тогда в действии кнопки вы должны сделать что-то вроде

-(IBAction)playPauseButtonClicked:(id)sender
{
    if (playing)
    {
         [self pauseButtonClicked];
    }
    else
    {
         [self playButtonClicked];
    }

    UIButton *theButton = (UIButton *)sender;

    playing = !playing;
    [theButton setImage:playing ? @"pauseImage.png":@"playImage.png" forState:UIControlStateNormal];
}

-(void)pauseButtonClicked
{
    // Handle pausing
}
-(void)playButtonClicked
{
    // Handle starting to play
}
1 голос
/ 16 марта 2011

Глобальное BOOL не обязательно.Просто установите изображение для UIControlStateSelected (т. Е. Play ), а другое для UIControlStateNormal (т. Е. pause ) и в своем методе действий:

-(IBAction)buttonAction:(id)sender{
    if ([sender isKindOfClass:[UIButton class]])
    {
        UIButton *button = sender;
        button.selected = !button.selected;
        if (button.selected)
            // Play
        else //Pause
    }
1 голос
/ 16 марта 2011
- (IBAction)buttonClicked:(id)sender
{

 UIButton *button = (UIButton *)sender;
[button setImage:pauseImage forState:state];
//Do things
}
0 голосов
/ 04 ноября 2015
    Here is my code. Have a look.

    @IBAction func playAndPauseButtonClicked(sender: AnyObject) {
            let skView = self.view as! SKView
            skView.scene!.paused = true

            if (playAndPauseButton.currentImage == UIImage(named: "play.png"))
            {
                playAndPauseButton.setImage(UIImage(named: "pause.png"), forState: UIControlState.Normal)
            }
            else
            {
                playAndPauseButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)
                skView.scene!.paused = false
            }

        }

Note: I used this in a sample game where I have button which pause and play the game scene. 
0 голосов
/ 16 марта 2011

У меня будет логическое значение в методе щелчка, которое отслеживает, играет ли оно уже или нет. Если он не воспроизводится, запустите его и установите для изображения паузу, если он воспроизводится, то при повторном нажатии сделайте все, что вам нужно, то есть приостановите и измените изображение.

Этот цикл будет в вашем методе щелчка:

if(playing) {
    //if the button is pressed and its already playing, pause or do whatever here
    [button setImage:startImage forState:normal];
    playing = NO;
} else {
    [button setImage:pauseImage forState:normal];
    playing = YES;
}
0 голосов
/ 16 марта 2011

Попробуйте это

-(void)playClicked:(id)sender{

UIButton *tappedButton = (UIButton*)sender;

if([tappedButton.currentImage isEqual:[UIImage imageNamed:@"play.png"]]) {
    [sender  setImage:[UIImage imageNamed: @"pause.png"] forState:UIControlStateNormal];
}

else {
    [sender setImage:[UIImage imageNamed:@"play.png"]forState:UIControlStateNormal];
}
}

Всего наилучшего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...