Soy nuevo en esto e intento cambiar el texto de un campo de texto en otro controlador de vista, y solo escribo algo como esto en preparación para la transición,


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    secondViewcontroller *transferViewController = segue.destinationViewController;

    NSLog(@"prepareForSegue: %@", segue.identifier);
    if([segue.identifier isEqualToString:@"1"]){
        transferViewController.IDtextfield.text = @"1";   
    }
    else if([segue.identifier isEqualToString:@"2"]){
        transferViewController.IDtextfield.text= @"2";
    }
    else if([segue.identifier isEqualToString:@"3"]){
        transferViewController.IDtextfield.text = @"3";
    }
    else if([segue.identifier isEqualToString:@"4"]){
        transferViewController.IDtextfield.text = @"4";    
    }
}

¿Alguien puede decirme si hay algo mal?

0
cylau97 13 dic. 2016 a las 14:05

2 respuestas

La mejor respuesta

Pruebe este código:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {

        if ([[segue identifier] isEqualToString:@"1"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"1";
        }
    else if ([[segue identifier] isEqualToString:@"2"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"2";
        }
    else if ([[segue identifier] isEqualToString:@"3"])
        {
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"3";
        }
    else{
            SecondViewController *transferViewController = [segue destinationViewController];
    transferViewController.data = @"4";
        }

}

SecondViewController.h

 @interface SecondViewController : UIViewController
         @property (nonatomic, readonly) NSString* data;
 @end

SecondViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    IDtextfield.text = self.data;
}

NOTA: Cuando crea el objeto de VC, simplemente crea la referencia de ese VC, es decir, cuando crea el objeto de SecondVC, no carga los controladores completos en la memoria. Eso significa que TextField no está en la memoria, por eso no puede configurar el texto de textField hasta que el VC no esté cargado.

Aquí, solo envío los datos que quería establecer en el campo de texto, después de que se carga el VC, configuro el texto del campo de texto.

0
dahiya_boy 13 dic. 2016 a las 11:39

Prueba una sintaxis así: -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller

        YourViewController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}
0
Ketan 13 dic. 2016 a las 11:12