παρακολούθησης στοίβα πλοήγησης

ψήφοι
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