Если вы хотите нажать контроллер вида с контроллером навигации, то ваш начальный вид должен быть внутри контроллера навигации для начала.
В вашем случае ваш контроллер панели вкладок, вероятно, должен быть вставлен в контроллер навигации, если это еще не сделано. Затем вы можете вызвать свой метод showDetails так, как вы это делали выше. Если это находится в контроллере навигации, возможно, вы можете опубликовать код, где вы делаете это, и я могу попытаться предложить дополнительную помощь.
Вот как вы могли бы сделать что-то подобное в своем приложении: DidFinishLaunchingWithOptions: method
FirstViewController *fvc = [[FirstViewController alloc] init];
SecondViewController *svc = [[SecondViewController alloc] init];
UITabBarController *tabcon = [[UITabBarController alloc] init];
tabcon.viewControllers = [NSArray arrayWithObjects:fvc,svc,nil];
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:tabcon];
[self.window addSubview:navcon.view];
Затем, когда вы хотите выдвинуть контроллер подробного просмотра, вы просто звоните:
DetailViewController *dvc = [[DetailViewController alloc] init];
[self.navigationController pushViewController:dvc];
Если вы установили свои контроллеры представления в качестве свойств, вы можете вызвать self.viewControllerName, просто убедитесь, что вы также выделяете для них память. Внедрение вашего контроллера панели вкладок в контроллер навигации, подобный этому, дает вам все оформление окна (кнопки назад, строку заголовка и т. Д.) Бесплатно, и оно будет адаптироваться к вашим различным представлениям, когда они появляются на экране.