В XCode 5 и iOS 7 не работает контроллер push-представления в ViewDidLoad
Привет, я пытаюсь подтолкнуть контроллер представления в viewDidLoad
Я использую раскадровку. В ViewDidLoad я проверяю, что пользователь является логином, и он создал свой профиль. если пользователь не вошел в систему или он не создал свой профиль, то нажмите другой контроллер представления для входа в систему / просмотра профиля. Следующий код не работает.
- (void)viewDidLoad
if(USER_IS_LOGGED_IN)
{
if(USER_PROFILE_COMPLETED)
{
[self sendRequest];
}
else
{
//push profile view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ProfileViewController *profileViewController = (ProfileViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ProfileView"];
profileViewController.isFromDealView = YES;
profileViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:profileViewController animated:YES];
}
}
else
{
//push login view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
LoginViewController *loginViewController = (LoginViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
loginViewController.isFromDealView = YES;
loginViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:loginViewController animated:YES];
}
}
2 ответа
Решение
Почему бы вам не создать переход от вашего viewController к контроллеру входа и просмотра профиля и использовать executeSegueUsingIdentifier: и нажать контроллер навигации с помощью prepareForSegue: метод
- (void)viewDidLoad
{
if(USER_IS_LOGGED_IN)
{
if(USER_PROFILE_COMPLETED)
{
[self sendRequest];
}
else
{
//push profile view
[self performSegueWithIdentifier:@"profileSegue" sender:self] ;
}
}
else
{
//push login view
[self performSegueWithIdentifier:@"loginSegue" sender:self] ;
}
}
в подготовке к методу
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"profileSegue"]) {
ProfileViewController *profileViewController = segue.destinationViewController;
profileViewController.isFromDealView = YES;
profileViewController.hidesBottomBarWhenPushed = YES;
}
else if([segue.identifier isEqualToString:@"loginSegue"]){
LoginViewController *loginViewController = segue.destinationViewController;
loginViewController.isFromDealView = YES;
loginViewController.hidesBottomBarWhenPushed = YES;
}
else{
//no segue to push
}
}
Я немного запутался с вашим кодом, но в любом случае попробуйте это
- (void)viewDidLoad {
if(USER_IS_LOGGED_IN) {
if(USER_PROFILE_COMPLETED)
{
[self sendRequest];
}
else
{
//push profile view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ProfileViewController *profileViewController = (ProfileViewController *)[storyboard instantiateViewControllerWithIdentifier:@"ProfileView"];
profileViewController.isFromDealView = YES;
profileViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:profileViewController animated:YES];
}
} else {
//push login view
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
LoginViewController *loginViewController = (LoginViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
loginViewController.isFromDealView = YES;
loginViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:loginViewController animated:YES];
}`
}