У меня есть три кнопки и 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];
}
Да, это точка и нужно сделать немного больше: установите для параметра destController.view.frame y значение 0; Спасибо за ответ; –