Мониторинг стека навигации

голоса
0

Может кто-нибудь сказать мне, почему это сравнение продолжает делать мое приложение замораживания и аварии?

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;
}
Задан 11/01/2010 в 11:56
источник пользователем
На других языках...                            


3 ответов

голоса
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] должен возвращать экземпляр UIViewController подкласса. Убедитесь, что он реагирует на -stringValue или (при условии, FromAddressController это имя класса) сделать так:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Ответил 11/01/2010 в 12:10
источник пользователем

голоса
1

Если добавить:

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

после строки:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Какое значение вы видите в консоли?

Ответил 11/01/2010 в 12:00
источник пользователем

голоса
0

Кроме того, эта линия:

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

выглядит подозрительным мне.

Я проверил документацию и UIViewControllerкласс не кажется, есть -stringValueметод. Таким образом , вы , вероятно , получите исключение непризнанного селектора и ваше приложение будет врезаться.

Возможно , вы имели в виду nibNameвместо stringValue?

Ответил 11/01/2010 в 12:04
источник пользователем

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