problemă conceptuală sau tehnică cu programare de cacao

voturi
2

Mă regăsesc în nevoie de acces la o viewcontroller din punctul său de vedere.

Aici este metoda

-(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];

}

Practic, am încercat să scrie o metodă generică comutator vizualizare care este numit de către controlorul de root pentru a schimba în subviewcontorllers vederi din vizualizarea rootcontrollers.

Eu trec într-un subviewcontroller și am putea elimina subview curent. Dar, în scopul de a face animație corectă vedere de comutare am nevoie de acces la controlerul de curent vedere punctele de vedere. Este aceasta abordare greșită și poate fi făcut?

Întrebat 02/03/2009 la 00:57
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Am adăugat un membru în rootcontroller care dețin pe vizualizare curentă sub controlerul (currentController) și se referă la el când un swap controler se face

-(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;

}
Publicat 02/03/2009 la 02:21
sursa de către utilizator

voturi
0

changeView()Metoda aparține în viewcontroller. Te - ar rezolva problema de a avea de vedere știind despre asta e controler (care nu ar trebui) și are mai mult sens.

De asemenea , dacă nu faci ceva fantezie în changeView()care nu se poate face folosind metode într - un UIViewControllerobiect , atunci ar trebui să - l utilizați în schimb, în cazul în care este necesara pentru a pune în aplicare propria metodă de vizualizare de comutare , atunci puteți extinde UIViewController în loc de implemtning parte din prezentul controlelr vedere în opinia dumneavoastră.

2 cenți mea :)

Publicat 02/03/2009 la 01:16
sursa de către utilizator

voturi
-2

Cred că abordarea ta este greșită. Ar trebui să se uite în UINavigationController cred.

Publicat 02/03/2009 la 01:09
sursa de către utilizator

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