Monitorizarea stivă de navigare

voturi
0

Poate cineva sa-mi spui de ce această comparație păstrează ceea ce face înghețarea mea app și accident?

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;
}
Întrebat 11/01/2010 la 11:56
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

[ViewControllerArray objectAtIndex: parentViewControllerIndex] ar trebui să returneze o instanță de UIViewController subclase. Asigurați-vă că răspunde la -stringValue sau (presupunând că FromAddressController este un nume de clasă) face acest lucru:

if([[viewControllerArray objectAtIndex:parentViewControllerIndex] class] == [FromAddressController class])
Publicat 11/01/2010 la 12:10
sursa de către utilizator

voturi
1

Dacă adăugați:

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

după linia:

NSUInteger parentViewControllerIndex = [viewControllerArray count] - 3;

Ce valoare vedeți în consolă?

Publicat 11/01/2010 la 12:00
sursa de către utilizator

voturi
0

De asemenea, această linie:

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

pare suspect pentru mine.

Am verificat documentația și UIViewControllerclasa nu pare să aibă o -stringValuemetodă. Deci , probabil va primi o excepție selector de nerecunoscut , iar cererea se va prăbuși.

Poate vrei să spui în nibNameloc stringValue?

Publicat 11/01/2010 la 12:04
sursa de către utilizator

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