user-44651
user-44651

Reputation: 4124

Proper way to dismiss multiple UIViews?

I have a UIViewController (HomeView) that shows my UIView called GameView via a Segue.

[self performSegueWithIdentifier: @"segue_playgame" sender: self];

The GameView calls a UIView (PauseView) when the use presses a button. This pause view is shown via just adding the PauseView to the UIView.

UIView *pv = [[PauseView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:pv];

To remove the PauseView I call

[pv removeFromSuperview];

Is there a way to call an "End Game" method in the PauseView that will remove both the PauseView and the GameView taking the user back the HomeView (UIViewController)?

And side note, is there a better way to handle showing views and removing them? Or is how I am doing it pretty much standard?

enter image description here

Upvotes: 0

Views: 38

Answers (1)

A.C. Wright
A.C. Wright

Reputation: 941

What you are missing here is a UINavigationController. From the official documentation:

The UINavigationController class implements a specialized view controller that manages the navigation of hierarchical content. This navigation interface makes it possible to present your data efficiently and makes it easier for the user to navigate that content. You generally use this class as-is but you may also subclass to customize the class behavior.

With your views managed by the UINavigationController stack you can use:

- (NSArray<__kindofUIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated

To pop back to the root view controller which in your case is your home view controller.

Upvotes: 1

Related Questions