konzeptionelles oder technisches Problem mit Cocoa Programmierung

stimmen
2

Ich finde mich in der Notwendigkeit des Zugangs zu einem Viewcontroller aus seiner Sicht.

Hier ist die Methode,

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

}

Grundsätzlich versuche ich, eine allgemeine Ansicht Schalter Methode zu schreiben, die von dem Root-Controller genannt werden subviewcontorllers Blick von der rootcontrollers Ansicht auslagern.

Ich gehe in einem subviewcontroller und bin in der Lage, die aktuelle subview zu entfernen. Aber um die richtige Ansicht Schalt Animation zu tun, muss ich Zugriff auf den aktuellen Ansichten View-Controller. Ist dies der falsche Ansatz und es kann getan werden?

Veröffentlicht am 02/03/2009 um 00:57
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Ich habe ein Mitglied der rootcontroller, die auf den aktuellen Teilansicht Regler (currentController) und bezieht sich auf sie zu halten, wenn eine Steuerung erfolgt Swap

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

}
Beantwortet am 02/03/2009 um 02:21
quelle vom benutzer

stimmen
0

Das changeView()Verfahren gehört in dem Viewcontroller. Es wäre lösen Sie Problem der Ansicht, die wissen , darüber Controller ist (was es nicht sollte) , und es macht mehr Sinn.

Auch wenn Sie etwas Phantasie in tun , changeView()das kann nicht mit den Methoden in einem erfolgen UIViewControllerObjekt dann sollten Sie es einfach stattdessen verwenden, wenn es neccesary ist Ihre eigene Ansicht Vermittlungsverfahren zu implementieren , dann können Sie UIViewController erweitern , anstatt Teil des implemtning Ansicht controlelr aus Ihrer Sicht.

my 2 cents :)

Beantwortet am 02/03/2009 um 01:16
quelle vom benutzer

stimmen
-2

Ich glaube, Ihr Ansatz ist falsch. Sie sollten in UINavigationController aussehen, glaube ich.

Beantwortet am 02/03/2009 um 01:09
quelle vom benutzer

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