monitoreo pila de navegación

votos
0

¿Puede alguien decirme por qué esta comparación no deja de hacer congela aplicación y accidente?

NSArray *viewControllerArray = [controlFromMap.navigationController viewControllers];
NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3 // or - whatever;
NSLog(@Parent view controller: %@, [viewControllerArray objectAtIndex:parentViewControllerIndex]);



if([[[viewControllerArray objectAtIndex:parentViewControllerIndex]stringValue] isEqualToString: @FromAddressController]){

    _mapView.showsUserLocation = NO;
}
else{

_mapView.showsUserLocation = YES;
}
Publicado el 11/01/2010 a las 11:56
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] debe devolver una instancia de UIViewController subclase. Asegurarse de que responde a -stringValue o (suponiendo FromAddressController es un nombre de clase) lo hacen tan:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Respondida el 11/01/2010 a las 12:10
fuente por usuario

votos
1

Si se agrega:

NSLog(@"parentViewControllerIndex: %d", parentViewControllerIndex);

después de la línea:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

¿Qué valor se ve en la consola?

Respondida el 11/01/2010 a las 12:00
fuente por usuario

votos
0

Además, esta línea:

if([[[viewControllerArray objectAtIndex:parentViewControllerIndex]stringValue] isEqualToString: @"FromAddressController"]){

parece sospechoso para mí.

Revisé la documentación y la UIViewControllerclase no parecen tener un -stringValuemétodo. Por lo que probablemente obtendrá una excepción de selección no reconocida y su aplicación se colgará.

Tal vez quiere decir nibNameen lugar de stringValue?

Respondida el 11/01/2010 a las 12:04
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more