2012-10-15 2 views
0

Это моя ситуация. У меня есть viewController. С тремя верхними кнопками и под кнопками удержания. Когда вы нажимаете кнопку, вид контейнера должен меняться.Работа с видом на контейнер

Это то, что я сделал в раскадровке.

  1. Перетащил контроллер просмотра в мою раскадровку. добавили 3 кнопки и включили в нее содержимое.
    Этот контроллер просмотра отключен от классаController
  2. Перетащил в него второй диспетчер представлений. И управляемый перетаскивается из контейнера в этот контроллер. и выбрали встроенный сегмент.

Теперь в коде сделать следующее для контроллера ViewController

-(IBAction)chooseFirstController:(id)sender { 
    [self.childViewControllers.lastObject switchToFirst]; 

} 

-(IBAction)chooseSecondController:(id)sender { 
    [self.childViewControllers.lastObject switchToSecond]; 
} 
-(IBAction)chooseThirdController:(id)sender { 
    [self.childViewControllers.lastObject switchToThird]; 
} 

И для моего containerController.h я делаю следующее.

@interface ContainerViewController : ViewController 

@property (nonatomic,strong) FirstController *cont1; 
@property (nonatomic,strong) SecondController *cont2; 
@property (nonatomic,strong) ThirdController *cont3; 
@property (nonatomic,strong) ContainerViewController *currentController; 

И в моем container.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.cont1 = [[FirstController alloc]initWithNibName:@"FirstController" bundle:nil]; 
    self.cont2 = [[SecondController alloc]initWithNibName:@"SecondController" bundle:nil]; 
    self.cont3 = [[ThirdController alloc]initWithNibName:@"ThirdViewController" bundle:nil]; 
    [self addChildViewController:self.cont1]; 
    self.currentController = self.cont1; 
    [self.view addSubview:self.cont1.view]; 
} 

-(void)switchToFirst { 
    if (self.currentController != self.cont1) { 
     [self addChildViewController:self.cont1]; 
     [self moveToNewController:self.cont1]; 
    } 
} 

-(void)switchToSecond { 
    if (self.currentController != self.cont2) { 
     [self addChildViewController:self.cont2]; 
     [self moveToNewController:self.cont2]; 
    } 
} 
-(void)switchToThird { 
    if (self.currentController != self.cont3) { 
     [self addChildViewController:self.cont3]; 
     [self moveToNewController:self.cont3]; 
    } 
} 

-(void)moveToNewController:(id) newController { 
    [self.currentController willMoveToParentViewController:nil]; 
    [self transitionFromViewController:self.currentController toViewController:newController duration:.6 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{} 
          completion:^(BOOL finished) { 
           [self.currentController removeFromParentViewController]; 
           [newController didMoveToParentViewController:self]; 
           self.currentController = newController; 
          }]; 
} 

, но я получаю ошибку "Ни один из известных метод экземпляра для селекторного switchtoFirst" в моих IBActions.

Может кто-нибудь мне помочь?

Заранее спасибо.

ответ

0

Я предположил бы, что lastObject возвращается в UIViewController и не знает, что это ContainerViewController - значит, ничего не знает о методе switchtoFirst.

Try что-то вроде:

-(IBAction)chooseFirstController:(id)sender { 
    UIViewController *vc = self.childViewControllers.lastObject; 
    if([vc isKindOfClass:[ContainerViewController class]]) { 
     ContainerViewController *containerVC = (ContainerViewController *)vc; 
     [containerVC switchtoFirst]; 
    } 
} 
Смежные вопросы