Для проекта на основе View, как добавить «новое представление» в «существующее представление», чтобы новое представление открывалось слева направо - PullRequest
0 голосов
/ 28 марта 2012
    -(IBAction)loginButton:(id)sender;{
LoginViewController *login= [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
[self presentModalViewController:back animated:YES];// I need a change here like below
//[self.navigationController pushViewController:login animated:YES];
}

Я пытаюсь открыть новый вид с помощью действия кнопки, и с помощью приведенного выше кода новый вид открывается снизу вверх. Я хочу, чтобы он открывался слева направо.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

вы можете установить modalTransitionStyle свойство viewController.

Но ни одно из разрешенных переходов (UIModalTransitionStyleCoverVertical, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, UIModalTransitionStylePartialCurl) не соответствует анимации, которую вы получаете при нажатии на стек навигации.

И это по замыслу. С помощью встроенной анимации пользователь может различать модальное представление и толкаемое представление.
По договоренности вы можете перемещаться назад и вперед из толкаемого вида пару раз без изменения содержимого. Модальное представление, однако, предназначено для прерывания пользователя в том, что он в данный момент делает, привлекает внимание к чему-то еще, например, потому что он должен заполнить лист входа в систему.

Выдвинутые viewControllers и модальные viewControllers - это не просто разные способы отображения чего-либо на экране для разработчика. Вы не можете поменять их произвольно. У них разная семантика. Не имеет смысла, что модальный viewController притворяется выдвинутым viewController. И вы не должны пытаться делать что-то подобное.

Если вам действительно нужен стек навигации, вы можете обернуть ваш текущий viewController в контроллер навигации и просто скрыть панель навигации.

0 голосов
/ 28 марта 2012

Попробуйте следующий код:

LoginViewController *login= [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
UINavigationController *nav = [UINavigationController alloc] initWithRootViewController:login]; 
[self.navigationController pushViewController:nav animated:YES];

Вы должны добавить свой UIViewController в UINavigationController, а затем вы можете нажать его. Так что это даст эффект слева направо, что ваше требование.

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