0

这是我使用的代码。

在视图控制器 A 中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(50, 50, 70, 40)];
    [button setTitle:@"Next View" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(nextView) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void) nextView
{
    SecondviewController *secondView = [[SecondviewController alloc] init];

    [self.view addSubview:secondView.view];
}

在视图控制器 B 中:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(50, 50, 70, 40)];
    [button setTitle:@"Previous View" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(previousView) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

-(void) previousView
{

    [self.view removeFromSuperview];
}

问题:当我单击视图控制器 B 中的按钮时,它没有切换回视图控制器 A...

4

2 回答 2

0

您需要在堆栈中呈现或推送视图控制器,而不是将第二个子视图添加到第一个子视图。您只是简单地将其添加为子视图。

 SecondviewController *secondView = [[SecondviewController alloc] init];
 [self presentViewController:secondView animated:NO completion:nil];

在第二个视图控制器中,当您关闭它时,您可以简单地从堆栈中关闭/弹出它。

 [self dismissViewControllerAnimated:YES];
于 2013-03-20T14:16:00.747 回答
0

您不是在切换 viewController,而是从 viewController B 获取视图并将其作为子视图添加到 viewController A。

这里:

     SecondviewController *secondView = [[SecondviewController alloc] init];
    [self.view addSubview:secondView.view];

您需要导航到新的视图控制器......例如用这个替换它

    SecondviewController *secondViewController = [[SecondviewController alloc] init];       
    [self presentViewController:secondViewController animated:YES completion:NIL];

(最好在命名控制器时包含“控制器”以避免与他们的视图混淆)

然后返回,您需要关闭呈现的视图控制器......

在 ViewControllerB 中替换这个:

   [self.view removeFromSuperview];

[[self presentingViewController] dismissViewControllerAnimated:YES completion:NIL];

这是从呈现的 viewController - viewController B - 向呈现的 viewController 发送一条消息, viewControllerA 执行实际的解除。

于 2013-03-20T14:07:33.250 回答