你可以与你的视图控制器初始化的navigationController为根视图控制器。然后隐藏导航条(如果需要的话)。然后,您将添加navigationController.view作为子视图。这将基本看起来像原始视图控制器。然后你可以pushViewController:animated:推结果视图Controller。
因此,例如在你的AppDelegate(或在适当的视图控制器):
创建一个UINavigationController的属性和伊娃和界面生成器钩住它的出口。然后将搜索控制器设置为导航栏的根视图控制器,并将其添加为子视图。
MySearchViewController* searchController = [[MySearchViewController alloc] init];
self.myNavigationController = [[UINavigationController alloc] initWithRootController:searchController];
[searchController release];
self.myNavigationController.navigationBarHidden = YES;
[self.window addSubview:self.myNavigationController.view];
[self.window makeKeyAndVisible];
然后当然在你searchController,你就简单的说:
ResultsViewController* myResultsViewController = [[MyResultsViewController alloc] init];
//You may want to create another init method and pass in some arguments like an array:
// [[MyResultsViewController alloc] initWithResults:results];
然后从结果的viewController推的viewController
//This is in your search controller class
[self.navigationController pushViewController:myResultsViewController Animated:YES];
[myResultsViewController release];
,找回你弹出视图控制器关闭navigationController视图控制器的堆栈。
//In results view controller perhaps in some IBAction for a back button:
-(IBAction)backButtonPressed:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
现在在App委托的didFinishLaunchingWithOptions样子: self.window.rootViewController = self.viewController; [self。窗口makeKeyAndVisible]; 返回YES; 根据您的建议,我在app委托头文件中添加了一个实例变量:UINavigationController * ListingNav;然后在同一文件中的属性以及实现文件中的相关合成语句。现在,我试图按照你所说的将searchController添加为rootView,但是我看到你在将它添加到导航控制器后才会释放searchContoller ...它是正确的吗? – Steve
将searchController添加到UINavigationController时,它将由UINavigationController保留。您可能会也可能不想要发布它,具体取决于您的应用程序的工作方式。我的答案的主要观点是,通过将视图控制器嵌套(作为UINavigationController的根视图控制器)(因缺乏更好的术语),您可以在根视图控制器之上推送和弹出其他视图控制器。我有时会添加一个UITabbar(不是UITabbarController),然后为一些或全部选项卡添加一个带有根视图控制器的UINavigationController。 – cdasher