0

This is the code i have used.

In View Controller 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];
}

In View Controller 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];
}

Issue: When i click the button in the view controller B, its not switching back to the view controller A...

4

2 に答える 2

0

viewControllers を切り替えるのではなく、viewController B からビューを取得し、それをサブビューとして viewController A に追加しています。

ここ:

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

新しいView Controllerに移動する必要があります...たとえば、これに置き換えます

    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 に答える
0

2 番目のサブビューを最初のサブビューに追加する代わりに、View Controller をスタックに提示またはプッシュする必要があります。サブビューとして追加するだけです。

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

2番目のView Controllerでは、それを閉じると、スタックから単に閉じる/ポップすることができます。

 [self dismissViewControllerAnimated:YES];
于 2013-03-20T14:16:00.747 に答える