我正在努力为应用添加一些功能,这与iOS上的Springboard上的应用切换抽屉非常相似。我希望能够有一个我可以点击的按钮,它将为视图的y坐标设置动画,以便在底部显示另一个视图。就像我说的,非常类似于iOS上的主页按钮双击功能。
在做了一些环顾之后,似乎我需要将两个子视图控制器都包装到一个父视图控制器中。
我该怎么做呢?现有的视图控制器非常复杂,所以我很难搞清楚从哪里开始。
答案 0 :(得分:2)
我不知道您需要使用父视图控制器来执行此操作。这段代码对我有用,可以做我认为你想要的。我有一个BOOL ivar来跟踪底部视图是否已经显示,并使用主视图中的相同按钮在两种状态之间切换。
-(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;
}];
}
}
我通常使用容器视图控制器来执行此类操作,但这很有效,并且非常简单。
答案 1 :(得分:0)
您可能想要使用UINavigationController,然后在点击按钮后再推送新的视图控制器。所以你会有你的主UIViewController,它有你不同的选择。当点击该按钮时,您将创建视图控制器的实例并将该视图控制器推送到堆栈顶部。您的代码可能看起来像这样
-(IBAction)ViewControllerOneTapped:(id)sender
{
UIViewController *vcOne = [[UIViewController alloc] initWithNibName:@"ViewControllerOne" bundle:nil];
[self.navigationController pushViewController:vcOne animated:YES];
}
你的最终代码会比有人一直为你写的复杂得多,但这是你可能想要采取的总体方向。