konseptuelle eller teknisk problem med Cocoa programmering

stemmer
2

Jeg finner meg selv i behov av tilgang til en viewcontroller fra sitt syn.

Her er metoden

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

}

I utgangspunktet, jeg prøver å skrive et generisk syn bryter metode som kalles av roten kontrolleren til å bytte ut subviewcontorllers utsikt fra rootcontrollers visning.

Jeg passerer i en subviewcontroller og er i stand til å fjerne den gjeldende subview. Men for å gjøre skikkelig utsikt veksling animasjon jeg trenger tilgang til dagens utsikt utsikten kontrolleren. Er dette feil tilnærming, og det kan gjøres?

Publisert på 01/03/2009 klokken 23:57
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Jeg har lagt et medlem til den rootcontroller som holder på den aktuelle under vis kontroller (currentController) og refererer til den når en styreenhet swap gjøres

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

}
Svarte 02/03/2009 kl. 01:21
kilden bruker

stemmer
0

Den changeView()metode som hører til i viewcontroller. Det ville løse du problem med å ha utsikten vet om det er kontrolleren (som det ikke burde), og det er mer fornuftig.

Også med mindre du gjør noe fancy i changeView()det kan ikke gjøres ved hjelp av metodene i et UIViewControllerobjekt så bør du bare bruke den i stedet, hvis det er neccesary å implementere ditt eget syn omkoblingsmetoden så kan du utvide UIViewController stedet for implemtning del av utsikten controlelr i ditt syn.

mine 2 cents :)

Svarte 02/03/2009 kl. 00:16
kilden bruker

stemmer
-2

Jeg tror din tilnærming er galt. Du bør se nærmere UINavigationController tror jeg.

Svarte 02/03/2009 kl. 00:09
kilden bruker

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