2014-10-31 5 views
0

Я делаю приложение с различными контроллерами. Мой домашний экран находится в main.storyboard. Остальные контроллеры просмотра имеют свои собственные xib, .h & .m Файлы. Я пытаюсь это сделать для навигации с главного экрана.Как вернуть контроллер контроллера в main.storyboard из xib без использования навигационного контроллера или панели навигации?

-(IBAction)btnSignUpTapped:(id)sender 
{ 
    SignUpWithEmailViewController * login = [[SignUpWithEmailViewController alloc] init]; 
    UINavigationController *nav = [[UINavigationController alloc] 
            initWithRootViewController:login]; 
    [self presentViewController:nav animated:YES completion:NULL]; 
} 

Этот код работает отлично подходит для навигации по различным ViewController (в данном случае SignUpwithEmailViewController). На SignUpWithEmailViewController У меня есть кнопка возврата, которая должна вернуть меня на главный экран. Это то, что я получил до сих пор:

-(IBAction)btnBackTapped:(id)sender 
{ 
    ViewController * homeScreen = [[ViewController alloc] init]; 

    UINavigationController *nav = [[UINavigationController alloc] 
            initWithRootViewController:homeScreen]; 
    [self presentViewController:nav animated:YES completion:NULL]; 
} 

Но в результате этого кода экран становится черным и ничего не происходит. Как решить эту проблему? Для скрытия панели навигации Я использую

-(void) viewWillAppear:(BOOL)animated 
{ 
[[self navigationController] setNavigationBarHidden:YES animated:NO]; 
} 
+0

Попробуйте использовать UIViewController * controller = [[classType alloc] initWithNibName: className bundle: nil]? – Anil

+0

Так что, если я хочу получить главный вид раскадровки, я сделаю это? UIViewController * controller = [[ViewController alloc] initWithNibName: пакет ViewController: nil]? а затем представить его? он говорит «Неожиданный интерфейс: ViewController». Конечно, у меня нет xib с именем ViewController. – NSNoob

+1

Если вы хотите его с вашего раскадровки, вам нужно будет сделать это: UIStoryboard * storyboard = [UIStoryboard storyboardWithName: @ «Основной» комплект: nil]; UIViewController * viewController = [storyboard instantiateViewControllerWithIdentifier: @ "MMSMenuViewController"]; – Anil

ответ

0

Да, вы должны вставить вас называется ViewController к NavigationController, , но если вы не будете использовать модальный поток - закрыть presentedViewController просто позвонить:

[self dismissViewControllerAnimated:YES completion:^{ 

}]; 

Редакцией:

может быть, это будет более полезно, это просто пример, поставить его к вам главный контроллер вида:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    UIViewController *c = [[UIViewController alloc] init]; 
    c.view.backgroundColor = [UIColor redColor]; 

    [self presentViewController:c animated:YES completion:^{ 
     [self dismissViewControllerAnimated:YES completion:^{ 

     }]; 
    }]; 
} 
+0

Это действительно работает. Позвольте мне посмотреть, смогу ли я найти лучшее решение. если нет, я буду отмечать его как ответ – NSNoob

Смежные вопросы