2009-03-01 17 views
2

Kendi bakış açısıyla bir görüntü denetleyicisine erişim ihtiyacım var.Kakao programlama ile kavramsal veya teknik sorun

İşte rootcontrollers görünümlerinden görüntülemek subviewcontorllers dışarı takas kök kontrolörü tarafından çağrılan genel görünüm anahtarı yöntemi yazmaya çalışıyorum, yöntemini Temelde

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

} 

olduğunu.

Bir alt denetleyicide geçiyorum ve geçerli alt görünümü kaldırabiliyorum. Ancak uygun görüntü değiştirme animasyonu yapmak için mevcut görünümler görünümü denetleyicisine erişmem gerekiyor. Bu yanlış bir yaklaşım mı ve bu yapılabilir mi?

cevap

-2

Yaklaşımınızın yanlış olduğuna inanıyorum. İnandığım UINavigationController'a bakmalısın.

+0

O olmayabilir Bir Gezinti Çubuğu (görünüm swtiching uygulayarak uygulayabilirsiniz) – hhafez

+0

Haklısınız. Yanlış yaklaşıma sahip oldum. Esasen MVC paradigmasıyla savaşıyordum. Hala bazı durumlarda MVC'nin nasıl uygulanacağını anlamaya çalışıyorum ama en azından ilerleme kaydediyorum! – michael

0

changeView() yöntemi, denetleyiciye aittir. Bu, kontrolör hakkında bilgi sahibi olmanın problemini çözecektir (ki bunu yapmamalı) ve daha mantıklı. Ayrıca

Bir UIViewController nesnede yöntemler kullanılarak yapılamaz changeView() yılında fantezi bir şey yapıyorsun sürece o zaman uzatabilirsiniz kendi bakış anahtarlama yöntemi uygulamak için UIViewController ettiniz ise o zaman sadece onu kullanmak gerekir Görünümünüzün denetim görünümünün bir parçası yerine uygulamak yerine.

benim 2 sent :)

+0

changepageview yöntemi kök görüntüleme denetleyicisinde. Sorun şu ki, şu anda rootviewcontrollers görünümünün indeks 0'da bir görünümü olan viewcontroller için bir tutamaç istiyorum. İndeks 0'daki görünüme erişebiliyorum, ancak onun kontrolörüne erişemiyorum. OP'den – michael

+0

'Kök denetleyicilerin görünümünden subviewcontorllers görünümlerini değiştirmek için kök denetleyici tarafından çağrılan genel bir görünüm anahtarı yöntemi yazmaya çalışıyorum.' Bu işlevin arkasındaki niyetinizi yanlış anlamadığım sürece, UIViewcontroller zaten bu işlevselliği sağlar. – hhafez

1

Geçerli alt görünümü kontrolörü (currentController) tutunmak ve bir kontrolör takas

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

} 

bittiğinde buna atıfta rootcontroller bir üye eklendi