2013-09-03 6 views
0

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

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

[viewDidLoad]

{ 
    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"); 
} 
} 
+1

Это должно работать нормально. Вы проверили, чтобы кнопка не была нулевой (т. Е. По какой-то причине вы на самом деле не ссылаетесь на нее). – AdamG

+0

self.toggleButonPlayMusic - это переменная Bool? –

+0

@eptdeveloper да, это логическое –

ответ

0

нет необходимости принимать дополнительные переменные только булевых поместить этот код и он работал отлично

-(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"); 
    } 
} 
+0

Я не думаю, что проблема здесь имеет значение boolean. Это может быть ненужным, но это не нарушит код, особенно когда он сказал, что предложения if-else работают правильно. – AdamG

+0

boolian - это не проблема, но кнопка сама проверяет его состояние, поэтому не нужно брать лишнего boolian за то же самое, пока вы можете проверить его с помощью кнопки. –

+0

Это правда, и это полная реализация. – AdamG

0

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

0

Попробуйте

-(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"); 
    } 
} 
0
-(IBAction)buttonPressed:(id)sender 
{ 
    if (self.buttonPlayMusic.titleLabel.text == @"Play") 
    { 
     [self.buttonPlayMusic setTitle:@"Stop" forState:UIControlStateNormal]; 
     [self.buttonPlayMusic setSelected:FALSE]; 
     NSLog(@"RRR"); 
    } 
    else if (self.buttonPlayMusic.titleLabel.text == @"Stop") 
    { 
     [self.buttonPlayMusic setTitle:@"Play" forState:UIControlStateNormal]; 
     [self.buttonPlayMusic setSelected:TRUE]; 
     NSLog(@"ZZZ"); 
    } 
} 
Смежные вопросы