Как вставить новый viewController в табличное представление, которое является вставленным представлением навигационного контроллера? - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть HomeViewController.m, в котором я нажимаю SpecificViewController на self.navigationController,

 SpecificViewController *specificViewController= [[SpecificViewController alloc] initWithNibName:@"SpecificViewController" bundle:nil];  
 [self.navigationController pushViewController:specificViewController animated:YES];

И в SpecificViewController.m я вставляю подвид

FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self.view insertSubview:firstViewController.view atIndex:0];

И в FirstViewController.м, есть таблица.Вопрос в том, как я могу выдвинуть новый ViewController с помощью navigationController, я попробую ниже, но он не работает.

-(void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath    
{
 DetailTableViewController *detail = 
 [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
 [self.navigationController pushViewController:detail animated:YES];
 [detail release];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

Я все еще пробовал новый UINavigationController,

UINavigationController *NEWnavigationController;
NEWnavigationController=[[UINavigationController alloc] init];                
[NEWnavigationController pushViewController:detail animated:YES];

, ноэто все еще не работало.Не могли бы вы дать мне какое-нибудь предложение?

1 Ответ

1 голос
/ 16 июня 2011

В вашем подходе много неправильных вещей.

Во-первых, SpecificViewController - это первый загружаемый контроллер представления? Если да, то вы не нажимаете этот контроллер представления, а устанавливаете его как корневой контроллер представления в делегате приложения, как показано ниже

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:[[SpecificViewController alloc] init];

Это будет гарантировать, что ваш контроллер навигации настроен, и первый контроллер представления, который появляется, является SpecificViewController

Во-вторых, вы не вставляете контроллер вида как подпредставление. Если вы пытаетесь загрузить второй контроллер вида, вы помещаете его в стек своего контроллера навигации. Вы можете сделать это из SpecificViewController, как показано ниже

FirstViewController *firstViewController =[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

[self.navigationController pushViewController:firstViewController animated:YES];
...