2015-07-10 4 views
1

У меня есть три кнопки и UIView (я называю это containerView), нажмите на каждый из кнопок, containerView покажет вид в UIViewController через пользовательский Segue, кнопки используют один IBAction метода (switchView), Я положил три кнопки в IBOutletCollection под названием navButtons; и в viewDidLoad Я вызываю switchView, чтобы сделать первый контроллер вида containerView.IOS Пользовательского Segue и ContainerView

И код работает хорошо, нет ошибки, единственный вопрос, когда я нажимаю первую кнопку, первый UIViewController будет отображаться в containerView, UIImageView (кнопки, метки и т. Д.) Должен находиться в центре экрана, но он никогда не ведет себя так, как только при первой загрузке, когда я нажимаю другую кнопку, а затем снова нажимаю первую кнопку, она вела себя так, как ожидалось, Я понятия не имею, что произошло, и какая разница между первой загрузкой и повторением ее снова. Есть ли что-то, что я пропустил в коде?

Я плохо разбираюсь в английском, Извините за что-то непонятное.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.availableIdentifier = [[NSMutableArray alloc] initWithObjects:@"Seg1",@"Seg2",@"Seg3", nil]; 


    [self switchView:self.navButtons[0]]; 
} 

- (IBAction)switchView:(UIButton *)sender 
{ 

    [self setSelectedIndexs:(int)sender.tag]; 

} 

- (void)setSelectedIndexs:(int)index 
{ 

    [self performSegueWithIdentifier:self.availableIdentifier[index] sender:self.navButtons[index]]; 

} 

//Code of Custom Segue: 
-(void)perform 
{ 
    ViewController *controller = (ViewController *)self.sourceViewController; 
    UIViewController *destController = (UIViewController *)self.destinationViewController; 
    for (UIView *view in controller.containerView.subviews) 
    { 
     [view removeFromSuperview]; 
    } 

    controller.currentController = destController; 
    [controller.containerView addSubview:destController.view]; 

    [controller.containerView setTranslatesAutoresizingMaskIntoConstraints:NO]; 


    [destController didMoveToParentViewController:controller]; 
} 

ответ

2

Я думаю, вы должны добавить:

destController.view.frame = controller.containerView.frame; 

перед тем controller.currentController = destController;

+0

Да, это точка и нужно сделать немного больше: установите для параметра destController.view.frame y значение 0; Спасибо за ответ; –

0

- это ваш клипКублики, установленные в UIViewController?

+0

Set. Не работает. –

0

Решено. Спасибо за ответ Бояна Божовича;

CGRect frame = controller.containerView.frame; 
frame.origin.y = 0; 
destController.view.frame = frame; 

Добавить выше до контроллера.currentController = destController;

Смежные вопросы