Изменить текст UIButton при нажатии

Моя программа выполняет метод buttonPressed и выполняет оператор if else, но текст на моей кнопке все еще не меняется. Есть ли что-то, что я пропустил? Я даже уже настроил его в xib, но текст кнопки PlayMusic остался как «Воспроизвести», даже если он входит в другое выражение.

Я думаю, что я тоже подключил кнопку. XIB

[просмотрDidLoad]

{  
    self.buttonPlayMusic = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    self.buttonPlayMusic.frame = CGRectMake(((scrollView.frame.size.width - 200) / 2) + cx, 360, 200, 50);
    [self.buttonPlayMusic setTitle:@"Play" forState:UIControlStateNormal];
    [self.buttonPlayMusic addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    self.toggleButonPlayMusic = YES; //YES to play, NO to stop music
   [scrollView addSubview:self.buttonPlayMusic];

}

-(IBAction)buttonPressed:(id)sender{
NSLog(@"SSS");
if (self.toggleButonPlayMusic == YES) {
    [self.buttonPlayMusic setTitle:@"Stop" forState:UIControlStateNormal];

    self.toggleButonPlayMusic = NO;
     NSLog(@"RRR");
}else{
    [self.buttonPlayMusic setTitle:@"Play" forState:UIControlStateNormal];
    self.toggleButonPlayMusic = YES;
    NSLog(@"ZZZ");
}   
}

person shoujo_sm    schedule 03.09.2013    source источник
comment
Это должно работать нормально. Проверили, чтобы убедиться, что кнопка не равна нулю (т. е. по какой-то причине вы на самом деле не получаете ссылку на нее).   -  person AdamG    schedule 03.09.2013
comment
self.toggleButonPlayMusic — это логическая переменная?   -  person D-eptdeveloper    schedule 03.09.2013
comment
@eptdeveloper да, это логическое значение   -  person shoujo_sm    schedule 03.09.2013


Ответы (3)


не нужно брать дополнительную логическую переменную, просто поместите этот код, и он отлично заработал

-(void)viewDidLoad
{
    [super viewDidLoad];
    //Do any additional setup after loading the view, typically from a nib.
    self.buttonPlayMusic = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    self.buttonPlayMusic.frame = CGRectMake(((scrollView.frame.size.width - 200) / 2) + cx, 360, 200, 50);
    [self.buttonPlayMusic setTitle:@"Play" forState:UIControlStateNormal];
    [self.buttonPlayMusic addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [self.buttonPlayMusic setSelected:TRUE]; //YES to play, NO to stop music
    [scrollView addSubview:self.buttonPlayMusic];
}

-(IBAction)buttonPressed:(id)sender
{
    if (self.buttonPlayMusic.selected == TRUE) 
    {
        [self.buttonPlayMusic setTitle:@"Stop" forState:UIControlStateNormal];            
        [self.buttonPlayMusic setSelected:FALSE];
        NSLog(@"RRR");
    } 
    else
    {
        [self.buttonPlayMusic setTitle:@"Play" forState:UIControlStateNormal];
        [self.buttonPlayMusic setSelected:TRUE];
        NSLog(@"ZZZ");
    }
}
person D-eptdeveloper    schedule 03.09.2013
comment
Я не думаю, что логическое значение здесь является проблемой. Это может быть ненужным, но это не нарушит код, особенно когда он сказал, что предложения if-else работают правильно. - person AdamG; 03.09.2013
comment
логическое значение не является проблемой, но кнопка сама проверяет свое состояние, поэтому нет необходимости использовать дополнительное логическое значение для выполнения того же действия, в то время как вы можете проверить его с помощью кнопки. - person D-eptdeveloper; 03.09.2013
comment
Это правда, и это полностью лучшая реализация. - person AdamG; 03.09.2013

Убедитесь, что вы перетаскиваете ссылку из файла в свой viewController с помощью перетаскивания ctrl и помещаете ее в свой @interface (иногда вы можете случайно избавиться от них). В этом сообщении есть несколько методов для убедитесь, что соединение настроено правильно.

person AdamG    schedule 03.09.2013

Попробуй это

-(IBAction)buttonPressed:(id)sender
{
 UIButton *btn =(UIButton*)sender;
    if (self.buttonPlayMusic.selected == TRUE)
    {
        [btn setTitle:@"Stop" forState:UIControlStateNormal];
        [self.buttonPlayMusic setSelected:FALSE];
        NSLog(@"RRR");

    }
    else
    {
        [btn setTitle:@"Play" forState:UIControlStateNormal];
        [self.buttonPlayMusic setSelected:TRUE];
        NSLog(@"ZZZ");
    }
}
person Ravindhiran    schedule 03.09.2013