surveillance de navigation de la pile

voix
0

Quelqu'un peut-il me dire pourquoi cette comparaison continue à faire mon gel de l'application et de crash?

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;
}
Créé 11/01/2010 à 11:56
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] doit retourner une instance de la sous-classe UIViewController. Assurez-vous qu'il répond à -stringValue ou (en supposant FromAddressController est un nom de classe) rendent si:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Créé 11/01/2010 à 12:10
source utilisateur

voix
1

Si vous ajoutez:

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

après la ligne:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Quelle est la valeur que vous voyez dans la console?

Créé 11/01/2010 à 12:00
source utilisateur

voix
0

En outre, cette ligne:

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

semble suspect pour moi.

J'ai vérifié la documentation et la UIViewControllerclasse ne semble pas avoir une -stringValueméthode. Donc , vous aurez probablement une exception sélecteur non reconnu et votre application plantera.

Peut-être vous dire au nibNamelieu de stringValue?

Créé 11/01/2010 à 12:04
source utilisateur

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