Navigatie stack bewaking

stemmen
0

Kan iemand mij vertellen waarom deze vergelijking houdt het maken van mijn app bevriezen en 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;
}
De vraag is gesteld op 11/01/2010 om 11:56
bron van user
In andere talen...                            


3 antwoorden

stemmen
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] moet een instantie van UIViewController subklasse retourneren. Zorg ervoor dat het reageert op -stringValue of (in de veronderstelling FromAddressController is een klasse naam) maken het zo:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
antwoordde op 11/01/2010 om 12:10
bron van user

stemmen
1

Als u toe te voegen:

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

na de regel:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Welke waarde zie je in de console?

antwoordde op 11/01/2010 om 12:00
bron van user

stemmen
0

Ook deze lijn:

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

er verdacht uitziet voor mij.

Ik controleerde de documentatie en de UIViewControllerklasse lijkt niet te zijn een -stringValuemethode. Dus zal je waarschijnlijk een onbekende selector uitzondering te krijgen en uw aanvraag zal crashen.

Bedoelde u misschien nibNamein plaats van stringValue?

antwoordde op 11/01/2010 om 12:04
bron van user

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