Monitorowanie stos nawigacji

głosy
0

Czy ktoś może mi powiedzieć, dlaczego to porównanie będzie opiekował się moim app zamarznąć i awarii?

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;
}
Utwórz 11/01/2010 o 11:56
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] Należy zwrócić wystąpienie UIViewController podklasy. Upewnij się, że reaguje na -stringValue lub (zakładając FromAddressController to nazwa klasy) zrobić to tak:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Odpowiedział 11/01/2010 o 12:10
źródło użytkownik

głosy
1

Jeśli dodać:

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

po wierszu:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Jaką wartość widzisz w konsoli?

Odpowiedział 11/01/2010 o 12:00
źródło użytkownik

głosy
0

Poza tym, ten wiersz:

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

wygląda podejrzanie mi.

Sprawdziłem dokumentację i UIViewControllerklasa nie wydaje się mieć -stringValuemetodę. Więc prawdopodobnie dostanie nierozpoznany wyjątek selektora i aplikacja będzie katastrofy.

Może oznaczać nibNamezamiast stringValue?

Odpowiedział 11/01/2010 o 12:04
źródło użytkownik

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