концептуальная или техническая проблема с программированием какао

голоса
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 и я в состоянии удалить текущий подвид. Но для того, чтобы сделать правильный взгляд переключения анимации я нужен доступ к текущему контроллеру вида вид. Это неправильный подход, и это может быть сделано?

Задан 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