monitoraggio dello stack di navigazione

voti
0

Qualcuno può dirmi il motivo per cui questo confronto continua a fare la mia app freeze e 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;
}
È pubblicato 11/01/2010 alle 11:56
fonte dall'utente
In altre lingue...                            


3 risposte

voti
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] deve restituire un'istanza di UIViewController sottoclasse. Assicurarsi che risponde a -stringValue o (assumendo FromAddressController è un nome di classe) lo rendono così:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Risposto il 11/01/2010 a 12:10
fonte dall'utente

voti
1

Se si aggiunge:

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

dopo la riga:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Quale valore si vede nella console?

Risposto il 11/01/2010 a 12:00
fonte dall'utente

voti
0

Inoltre, questa linea:

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

sembra sospetto a me.

Ho controllato la documentazione e la UIViewControllerclasse non sembrano avere un -stringValuemetodo. Quindi probabilmente otterrà un'eccezione di selezione non riconosciuta e andrà in crash l'applicazione.

Forse vuoi dire nibNameinvece di stringValue?

Risposto il 11/01/2010 a 12:04
fonte dall'utente

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