0

我有两个视图控制器。在第一个中,我有一个按钮,当单击它时,我想在屏幕右侧显示另一个视图控制器,以便像模态呈现表单一样登录。

目前我有第二个带有标签的视图控制器,但是当我单击它时它显示为空,我不知道怎么做,因为我在里面放了一个标签,当然在屏幕中间。

LoginViewController *loginController = [[LoginViewController alloc] init];
loginController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:loginController animated:YES completion:nil];
loginController.view.superview.frame = CGRectMake(0, 0, 300, 1000);
loginController.view.superview.center = self.view.center;

有什么建议可以查看标签吗?改变立场?

4

1 回答 1

1

我认为最好使用自定义容器控制器方法来执行此操作。在下面的示例代码中,我制作了一个表单大小 (540 x 600) 的登录控制器,并将其从右侧滑入 ViewController 的主视图,使其垂直居中,并靠在右边。

在 ViewController.m 中,我有这个:

-(IBAction)showLogin:(id)sender {
    LoginController *login = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
    login.view.frame = CGRectMake(768, 202, 540, 600);//centered vertically and offscreen to the right
    [self addChildViewController:login];
    [self.view addSubview:login.view];
    [UIView animateWithDuration:.5 animations:^{
        login.view.frame = CGRectMake(228, 202, 540, 600);
    } completion:^(BOOL finished) {
        [login didMoveToParentViewController:self];
    }];
}

为了删除视图,我在 LoginController.m 中有这个:

-(IBAction)goBackToMain:(id)sender {
    [UIView animateWithDuration:.5 animations:^{
        self.view.frame = CGRectMake(768, 202, 540, 600);
    } completion:^(BOOL finished) {
        [self.view removeFromSuperview];
        [self removeFromParentViewController];
    }];
}

编辑后:

如果要从 ViewController 中的按钮中删除登录控制器,可以这样做:

-(IBAction)goBackToMain:(id)sender {
        LoginController *login = self.childViewControllers.lastObject;
        [UIView animateWithDuration:.5 animations:^{
            login.view.frame = CGRectMake(768, 202, 540, 600);
        } completion:^(BOOL finished) {
            [login.view removeFromSuperview];
            [login removeFromParentViewController];
        }];
    }
于 2013-01-03T21:57:20.873 回答