2013-09-13 3 views
3

У меня есть код, который использует раскадровку для seques, например, так:Segue к контроллеру UINavigation программно без раскадровки

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ShowDiagnosis"]) 
    { 
     [segue.destinationViewController setHappiness:self.diagnosis]; 
    } 
    ... 

Но я хочу сделать это программно. У меня есть класс myViewController, и когда я нажимаю кнопку, я хочу оживить и нажать на myUINavigationController.

Как это делается программно?

+0

Возможно, ответ на ваш вопрос вы можете найти в этом разделе: http://stackoverflow.com/questions/18711668/first-method-after-touching-a-table-view-cell-didselectrowatindexpath-or- подготовить/18711785 # 18711785 –

+0

self.navigationcontroller pushviewcontroller ... анимированный: ДА –

ответ

5

Прежде всего segue можно использовать только в том случае, если у вас есть UINavigationController, который будет обрабатывать навигацию (push, pop и т. Д.).

Так что если у вас есть UINavigationController, и вы хотите, чтобы нажать другую UIViewController на стеке без использования segue, то вы можете использовать pushViewController:animated: метод, который также имеет обратную popViewControllerAnimated:. Также UINavigationController предлагает другие способы добавления/удаления UIVIewControllers, для дополнительной информации. UINavigationController class reference.

+1

Как сделать мой пульт управления представлением приложения слайдом на контроллер навигации? Например, я хочу создать стартовую страницу без панели инструментов, после чего пользователь нажимает на регистрацию и анимирует ее в виде регистра с помощью кнопки «Назад». – cdub

+0

Взгляните на документацию о представлении модальных контроллеров. https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html – mkubilayk

10

Прежде всего, segue не может быть создан программно. Он создается средой раскадровки, когда пришло время выполнить. Однако вы можете вызвать segue, который уже определен в построителе интерфейса, путем вызова performSegueWithIdentifier:.

Кроме этого, вы можете обеспечить переходы между контроллерами представлений без объектов segue, точно. В соответствующем методе действия создайте экземпляр контроллера вида, либо путем программного программирования, либо создания экземпляра из раскадровки с его идентификатором. Затем нажмите на свой навигационный контроллер.

- (void)buttonClicked:(UIButton *)sender 
{ 
    MyViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"my-vc-identifier"]; 
    // OR MyViewController *vc = [[MyViewController alloc] init]; 

    // any setup code for *vc 

    [self.navigationController pushViewController:vc animated:YES]; 
} 
Смежные вопросы