2015-05-15 2 views
0

У меня есть еще один ViewController внутри той же панели сообщений, к которой я хочу переключиться, нажав кнопку. Проблема в том, когда я пытаюсь управлять. Перетащите второй контроллер представления для создания Outlet внутри файла ViewController.m основного контроллера представления, выход не создается.Открытие ViewController программно

В Android мы можем открывать новую активность с другим пользовательским интерфейсом из другой деятельности. Я уверен, что то же самое может быть достигнуто и в iOS, поэтому мой вопрос: Как я могу создать выход второго контроллера и открыть его программно?

+0

Использование раскадровки? Тогда вы можете создать 'segues' – sasquatch

ответ

2

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

Я предлагаю вам следовать за Tutorial: Storyboards от Apple Documentation. Это поможет вам понять, как на самом деле подключены ViewControllers.

0
Try this 

Viewcontroller*homeVC; 
     [self.navigationController setNavigationBarHidden:YES]; 
     UIStoryboard *storyBoard; 

     storyBoard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 
     homeVC=(HomeVC*)[storyBoard instantiateViewControllerWithIdentifier:@"HomeVC"]; 


     [self.navigationController pushViewController:homeVC animated:YES]; 
+1

Я считаю, что вызов' self.storyboard' будет быстрее;) – arturdev

0

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

Сначала создайте segue между viewControllers: уменьшите представление, дважды щелкнув фон интерфейса. Ctrl + перетащить с одного VC на другой и выбрать тип segue (например, show).

чем создать действие для кнопки, в которой вы можете:

[self performSegueWithIdentifier:@"myIdentifier" sender:self]; 

После этого, в -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender проверки идентификатора Segue, установить новый yourCustomClassViewController и вуаля!

if ([segue.identifier isEqualToString:@"myIdentifier"]) { 
     myCustomClassViewController *myCustomVC = [segue destinationViewController]; 
     myCustomVC.oldProfile = newProfile; 
} 
1

Открытие SecondViewController программно можно с помощью Storyboard Identifier, Вы должны предоставить раскадровку имя идентификатора для класса, который вы хотите переключиться, увидеть это изображение enter image description here, в моем демо я использовал secondViewController

Теперь используйте этот код внутри вашего метода события buttonClick.

- (IBAction)buttonClicked:(id)sender { 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 

    SecondViewController *secondViewController = (SecondViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"secondViewController"]; 

    // Use this to show your UIViewController in modal transition. 
    [self presentViewController:secondViewController animated:YES completion:nil]; 

    // Use this to show your UIViewController in push transition with navigation controller 
    //[self.navigationController pushViewController:secondViewController animated:YES]; 

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