Мне трудно управлять представлениями в моем приложении, и буду признателен всем, кто предоставит некоторые разъяснения.На мой взгляд, программа структурирована как иерархия следующим образом.
BNG_AppViewController:UIViewController
-calls-
NameListSelectionController:UIViewContoller
-calls-
GameViewController:UIViewController
-звонки-
NameResultsController:UIViewController
Все подпредставления, которые построены с использованием XIB из построителя интерфейса, вызываются идентично следующему:
NameListSelectionController *NameListSelectionControllerScreen = [[NameListSelectionController alloc] initWithNibName:@"NameListSelectionController"
bundle:nil];
[self.view addSubview:NameListSelectionControllerScreen.view];
Когда я хочу перейти вверхВ моей иерархии представлений я использую вызов, идентичный следующему, из класса контроллера - обычно использую кнопку для запуска вызова.
[self.view removeFromSuperview];
Используя этот метод, я могу перемещаться вверх и вниз по своей иерархии влинейный стильдо 1-го уровня.
До сих пор я пытался удалить представление 2-го уровня из иерархии при вызове третьего уровня на пути вниз по иерархии, но безрезультатно.
[self.view removeFromSuperview];
gameScreen = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
[self.view addSubview:gameScreen.view];
Тем не менее, я, кажется, в конечном итоге обратнона моем 1-м уровне, без какого-либо явного влияния на вторую и третью строки кода.Я также попытался отправить 2-й уровень иерархии назад, без каких-либо результатов.
Я был бы признателен за любые указатели в правильном направлении, в том числе за идеи общей картины о том, как пересмотреть структуру моегопрограмма.Мне нужно направить пользователя линейным способом, описанным выше, но я не знаю, что мне нужно, чтобы программа была построена таким образом.
Я прочитал всю документацию по подпредставлениям и вызову removeFromSuperview, который смог найти, но не нашел способа сделать то, что хотел, или я не понял, что я прочитал.Я изучал возможность использования NavigationController, но, похоже, это не давало никаких преимуществ, учитывая то, что я пытался сделать (или, может быть, я их не видел).