これを行うには、親のViewControllerを使用する必要があるかどうかわかりません。このコードは、私があなたが望むと思うことをするのに役立ちました。底面ビューが表示されたかどうかを追跡するためのBOOLivarが1つあり、メインビューの同じボタンを使用して2つの状態を切り替えます。
-(IBAction)slideInController:(UIButton *) sender {
if (viewRevealed == NO) {
next = [self.storyboard instantiateViewControllerWithIdentifier:@"Blue"];
next.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + self.view.frame.size.height, self.view.frame.size.width, 100); // my NextController's view was made 100 points high in IB.
[self.view.window addSubview:next.view];
[UIView animateWithDuration:.6 animations:^{
self.view.center = CGPointMake(self.view.center.x, self.view.center.y - 100);
next.view.center = CGPointMake(next.view.center.x, next.view.center.y - 100);
} completion:^(BOOL finished) {
viewRevealed = YES;
}];
}else{
[UIView animateWithDuration:.6 animations:^{
self.view.center = CGPointMake(self.view.center.x, self.view.center.y + 100);
next.view.center = CGPointMake(next.view.center.x, next.view.center.y + 100);
} completion:^(BOOL finished) {
[next.view removeFromSuperview];
viewRevealed = NO;
}];
}
}
私は通常、この種のことを行うためにコンテナビューコントローラを使用しますが、これは機能し、非常に簡単です。