2011-11-02 12 views
17

Estoy tratando de establecer el texto de un UIButton en un nuevo punto de vista cuando se pulsa un botón "Siguiente" desde una vista anterior. Yo he dado la IBOutlet correctamente y he buscado por todas partes para respuestas a esta, pero simplemente no funciona en absoluto.UIButton setTitle forState no funciona

Este es un ejemplo de lo que estoy tratando de hacer:

- (IBAction)computeQuiz:(id)sender 
{ 
    [fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 
} 

- (IBAction)jumpT10ResultsView:(id)sender 
{  
    NSString *nibFileToLoad = @"JumpT10Results"; 

    UIDevice *device = [UIDevice currentDevice]; 

    if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
    { 
     nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"]; 
    } 

    JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil]; 

    // Modal view controller 
    nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:nextView animated:YES]; 

    [nextView release]; 

    [scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)]; 
} 

Estas acciones están conectados a un botón en una vista anterior. La vista se carga bien y todo, el único problema es que el texto NO cambiará en el botón. Estoy 100% seguro de que tengo los IBOutlets configurados correctamente. Simplemente no sé lo que estoy haciendo mal. ¿Algunas ideas?

+0

* Estoy 100% seguro de que tengo los IBOutlets establecen correctamente *, espero IBActions están conectados correctamente también? – beryllium

+0

¿Estás seguro de que tu acción está configurada? Ponga un punto de quiebre y verifique. – logancautrell

+0

La siguiente vista se presenta y me he colocado en mi NSLogs acción computeQuiz que se presentó. Las acciones se están llamando. – Link

Respuesta

16

No funciona porque IB establece attributedTitle en lugar de title.

Tal vez puedas probar:

NSAttributedString *attributedTitle = [self.myButton attributedTitleForState:UIControlStateNormal]; 
NSMutableAttributedString *mas = [[NSMutableAttributedString alloc] initWithAttributedString:attributedTitle]; 
[mas.mutableString setString:@"New Text"]; 

[self.myButton setAttributedTitle:mas forState:UIControlStateNormal]; 

O, alternativamente:

[self.myButton setAttributedTitle:nil forState:UIControlStateNormal]; 
[self.myButton setTitle:@"New Text" forState:UIControlStateNormal]; 

(. La segunda opción no conservará su formato)

+0

Todavía no estoy seguro de por qué no se marca la respuesta correcta después de 4 años. – Prabhav

3

probar este código ....

UIButton *backbtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 68, 38)]; 
[backbtn setTitle:@"Your string" forState:UIControlStateNormal]; 
//[backbtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal]; 
[backbtn addTarget:self action:@selector(backBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:backbtn]; 
1

intentar llamar a

- (IBAction)computeQuiz:(id)sender 

método en el método

- (IBAction)jumpT10ResultsView:(id)sender 

en lugar de llamar simultáneamente en clic de botón, incluso como simultáneos como en debajo del código, call of method me resulta en la no asignación del objeto del botón fiveFootUniversalResults.

- (IBAction)computeQuiz:(id)sender 
{ 
    [fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 
} 

- (IBAction)jumpT10ResultsView:(id)sender 
{  
    NSString *nibFileToLoad = @"JumpT10Results"; 

    UIDevice *device = [UIDevice currentDevice]; 

    if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
    { 
     nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"]; 
    } 
    JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil]; 

    // Modal view controller 
    nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:nextView animated:YES]; 

    [nextView release]; 

    [scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)]; 
    [self computeQuiz:nil]; 
} 
0

Esto también puede suceder si se olvida de utilizar el @synthesize en el botón o variables asociadas con éste.

-1

intento:

[fiveFootUniversalResults setBackgroundColor:[UIColor redColor]]; 
[fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 

Quizás el fondo co Es el mismo que el color del título. No verá nada cuando escriba en papel negro con un bolígrafo negro. Intente establecer el color de fondo o el color del título antes de llamar a setTitle.

Cuestiones relacionadas