2015-06-27 3 views
0

У меня есть три Просмотреть контроллер A, B, C .I есть навигационный контроллер прилагается к A вида controller.In У меня есть несколько кнопок, я прилагаю кнопку переход к B вида controller.Onclick кнопок я иду к B вида controller.On B Посмотреть контроллер у меня есть UITableView по щелчку табличного элемента я объявивший C вида controller.below код для этогоКак получить панель навигации на контроллере просмотра?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row==0) 
    { 
     NSLog(@"first cell"); 
     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
     UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessCard"]; 
     [self presentViewController:vc animated:YES completion:nil]; 

    } 
    else if(indexPath.row==1) 
    { 
     NSLog(@"second cell"); 


    } 
    else if(indexPath.row==2) 
    { 
     NSLog(@"third cell"); 

    } 

} 

Но на C Контроллер просмотра на панели навигации не появляется. Я думаю, что контроллер C view не связан с навигационным контроллером.

+3

Используйте '[self.navigationController pushViewController: VC анимированный: ДА] 'вместо' [self presentViewController: vc animated: YES complete: nil] ' –

+0

не забудьте отметить правильный ответ, чтобы закрыть этот вопрос :) – Masterfego

ответ

2

используется navigationController нажимного метода для отображения навигационной панели в C ViewController

попробовать этот код:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
     UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessCard"]; 
     [self.navigationController pushViewController:vc animated:YES]; 
+0

Почему мой код не работает. Извините, но я новичок в iOS – Techiee

+0

@deepakkumar, который вы используете для представления контроллера представления. в текущем контроллере представления не будет панели навигации –

1

Используйте код ниже

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessCard"]; 
UINavigationController *nav=[[UINavigationController alloc] initWithRootViewController:vc]; 
[self presentViewController:nav animated:YES completion:nil]; 

Вы должны представить его, используя UINavigationController как модальный.

Надеюсь, это поможет.

+0

Я новичок в iOS. В чем разница между вашим ответ и другие ответы выше? @iphonic – Techiee

1

использовать это:

[self.navigationController pushViewController:vc animated:YES]; 
+0

обновленный ответ ... – Masterfego

0

Вы можете использовать "PUSH" SEGUE и встраивание ваш ViewController в навигационном контроллере, а затем используйте его функции навигационного контроллера, такие как pushViewController и popViewControllerAnimated

0

Ответ все правильно, но я просто хочу, чтобы объяснить вещи ..

//This line gets the storyboard with the name "Main" which contains all 
//the setup you made for UI (User interface) 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 

//While this like gets the view inside your storyboard with 
//storyboard ID/indentifier `BusinessCard ` 
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessCard"]; 

//Lastly, this line is correct presenting the viewcontroller BUT this doesn't add your 
//viewcontroller to the array of viewControllers inside navigationController 
// 
//Also, this line makes you present the viewController above the 
//rootViewController of window which is in your case the navigationController 
// 
This is you Error 
[self presentViewController:vc animated:YES completion:nil]; 

//This is what you are looking for, and the correct one for your implementation 
// 
//This will let you add the `vc`(viewController) to the array of viewController 
//in navigationController, to confirm that you can check the `self.navigationController.viewControllers` 
//which will return the array of viewController inside your navigationController 
This is the Answer 
[self.navigationController pushViewController:vc animated:YES]; 

Надеется, что это поможет вам, и мое объяснение apprehendable .. Приветствия

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