Sledování stack navigace

hlasů
0

Může mi někdo říct, proč se toto srovnání udržuje dělat můj app zmrazit a pád?

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;
}
Položena 11/01/2010 v 11:56
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] by měl vrátit instanci UIViewController podtřídy. Ujistěte se, že reaguje na -stringValue nebo (za předpokladu FromAddressController je název třídy), aby se tak stalo:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Odpovězeno 11/01/2010 v 12:10
zdroj uživatelem

hlasů
1

Přidáte-li:

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

po řádku:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Jakou hodnotu vidíte v konzoli?

Odpovězeno 11/01/2010 v 12:00
zdroj uživatelem

hlasů
0

Také tento řádek:

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

vypadá podezřele ke mně.

Ověřil jsem si dokumentaci a UIViewControllertřída se nezdá mít -stringValuemetodu. Takže pravděpodobně získají nerozpoznané výjimku voliče a aplikace spadne.

Možná, že máte na mysli nibNamemísto stringValue?

Odpovězeno 11/01/2010 v 12:04
zdroj uživatelem

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