εννοιολογική ή τεχνικό ζήτημα με τον προγραμματισμό κακάο

ψήφοι
2

Βρίσκομαι στην ανάγκη πρόσβασης σε viewcontroller από την άποψη της.

Εδώ είναι η μέθοδος

-(void)changePageView:(UIViewController*)newviewcont withtransitiontype:(int)t andtransitionspeed:(int)s
{
    //Remove whatever view is currently loaded at index 0, this index is only to be used by page views
    UIView *oldview = [self.view.subviews objectAtIndex:0];

    [UIView beginAnimations:@View Flip context:nil];
    [UIView setAnimationDuration:s];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [newviewcont viewWillAppear:YES];
    //[oldview viewWillDisappear:YES];
    [oldview removeFromSuperview];
    [self.view insertSubview:newviewcont.view atIndex:0];
    //[oldview viewDidDisappear:YES];
    [newviewcont viewDidAppear:YES];

}

Βασικά, εγώ προσπαθώ να γράψω μια μέθοδο διακόπτη γενική άποψη που καλείται από τον ελεγκτή ρίζα για να ανταλλάξουν απόψεις subviewcontorllers από την άποψη rootcontrollers.

Περνώ σε ένα subviewcontroller και είμαι σε θέση να αφαιρέσει το τρέχον δευτερεύουσας προβολής. Αλλά για να κάνουμε σωστή animation άποψη εναλλαγή i πρέπει να έχουν πρόσβαση στην τρέχουσα ελεγκτή προβολή απόψεων. Είναι αυτό το λάθος προσέγγιση και μπορεί να γίνει;

Δημοσιεύθηκε 02/03/2009 στις 00:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
1

Προσέθεσα ένα μέλος στην rootcontroller που συγκρατούν πάνω στον ελεγκτή τρέχουσα υπο όψη (currentController) και αναφέρεται σε αυτό όταν μια συμφωνία ανταλλαγής ελεγκτή γίνεται

-(void)changePageView:(UIViewController*)newviewcont withtransitiontype:(int)t andtransitionspeed:(int)s
{


    [UIView beginAnimations:@"View Flip" context:nil];
    [UIView setAnimationDuration:s];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [newviewcont viewWillAppear:YES];
    [self.currentController viewWillDisappear:YES];
    [self.currentController.view removeFromSuperview];
    [self.view insertSubview:newviewcont.view atIndex:0];
    [self.currentController viewDidDisappear:YES];
    [newviewcont viewDidAppear:YES];
    [UIView commitAnimations];


    self.currentController = newviewcont;

}
Απαντήθηκε 02/03/2009 στις 02:21
πηγή χρήστη

ψήφοι
0

Η changeView()μέθοδος ανήκει στο viewcontroller. Θα σας λύσει το πρόβλημα της έχει την άποψη το γνωρίζουν είναι υπεύθυνος (η οποία δεν πρέπει) και να έχει περισσότερο νόημα.

Επίσης, αν δεν κάνουμε κάτι φανταχτερό στο changeView()ότι δεν μπορεί να γίνει με τη χρήση των μεθόδων σε ένα UIViewControllerαντικείμενο, τότε θα πρέπει να το χρησιμοποιήσετε μόνο αντ 'αυτού, αν είναι neccesary να εφαρμόσει τη δική του μέθοδο θέα μεταγωγή σας, τότε μπορείτε να επεκτείνετε UIViewController αντί implemtning μέρος του προβολή controlelr κατά την άποψή σας.

2 σεντ μου :)

Απαντήθηκε 02/03/2009 στις 01:16
πηγή χρήστη

ψήφοι
-2

Πιστεύω ότι η προσέγγισή σας είναι λάθος. Θα πρέπει να εξετάσουμε UINavigationController πιστεύω.

Απαντήθηκε 02/03/2009 στις 01:09
πηγή χρήστη

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