UINavigationController делает один вид модальным - PullRequest
1 голос
/ 11 января 2012

У меня две страницы в начале, страница входа и страница регистрации. Страница регистрации находится за страницей входа.

На странице входа есть кнопка для вызова демонстрационной страницы, поэтому мне нужен навигационный контроллер для страницы входа, чтобы можно было получить кнопку «назад» при вызове демонстрационной страницы.

Итак, я установил навигационный контроллер в AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


    LoginViewController *_loginViewController = [[LoginViewController alloc] init];


    RegisterViewController *_registerViewController = [[RegisterViewController alloc] init];
    [self.window addSubview:_registerViewController.view];
    [_registerViewController release];

    [self.window addSubview:_loginViewController.view];


    navController = [[UINavigationController alloc] initWithRootViewController:_loginViewController];
    [self.window addSubview:self.navController.view];
    [_loginViewController release];
    [self.window makeKeyAndVisible];
    return YES;
}

Это может привести к тому, что кнопка на странице входа в систему будет работать нормально, но при выходе из страницы входа в систему и отображении страницы регистрации страница регистрации не может реагировать на действия пользователя.

Что не так с кодом?


EDIT:

Мой плохой, не сказал ясно. Когда я говорю, что страница входа «покинуть», она на самом деле не исчезает полностью. На экране осталась одна пятая. Затем появится страница регистрации. В этом случае я добавляю страницу входа и страницу регистрации в AppDelegate. Также я не использую XIB ...

@ dasblinkenlight и @ hiren443?

Ответы [ 3 ]

3 голосов
/ 11 января 2012

Мне кажется, проблема в том, что вы добавляете представления обоих контроллеров в window, а также неправильно используете контроллер навигации.

Вот что вы должны сделать вместо этого:

  • Сначала создайте навигационный контроллер
  • Нажмите страницу регистрации, а затем страницу входа на контроллер
  • Скрыть кнопку [назад] для страницы входа
  • Добавить навигационный контроллер в качестве единственного подпредставления главного окна

В контроллере страницы входа в систему вызовите контроллер навигации popToRootViewControllerAnimated, чтобы отобразить страницу регистрации.

2 голосов
/ 11 января 2012

сначала добавить логин

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


    LoginViewController *_loginViewController = [[LoginViewController alloc] init];
    navController = [[UINavigationController alloc] initWithRootViewController:_loginViewController];
    [self.window addSubview:self.navController.view];
    [_loginViewController release];
    [self.window makeKeyAndVisible];
    return YES;
}

на странице входа добавить кнопку и метод действия

-(IBAction)DemoBtnPressed
{
  RegisterViewController *_registerViewController = [[RegisterViewController alloc] init];
  [self.navigationController pushViewController:_registerViewController animated:YES];

}
0 голосов
/ 12 января 2012

Ну, я понял.Мой путь таков: при попытке переместить страницу входа вверх (не выйти, 1/5 слева на экране), чтобы показать страницу регистрации, не переместить страницу входа, а переместить контроллер навигации страницы входа.

Но вы, ребята, комментарии помогли!В любом случае, спасибо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...