【发布时间】:2012-05-01 12:50:21
【问题描述】:
这个问题用图片很容易理解。 我有一个 UINavigationController 允许用户在视图之间切换。
第一个视图包含一个搜索栏和一个表格视图,如下所示:
第二个是显示单元格信息的基本视图
当我点击搜索栏时,导航控制器被隐藏,搜索栏现在位于顶部。
现在,如果我单击一个单元格,它将转到第二个视图,但导航栏首先隐藏如下:
然后,它会自动显示为:
我已经尝试了一些方法,例如在推送下一个视图控制器之前显示导航栏,但它非常难看.. 有谁知道如何在第二个视图上直接显示导航栏(如在联系人应用程序中)?
[更新]:代码
AppDelegate.m(我说的是navigationcontroller2)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
FirstViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
SecondViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
viewController1.managedObjectContext = [self managedObjectContext];
viewController2.managedObjectContext = [self managedObjectContext];
viewController1.viewController2 = viewController2;
UINavigationController *navigationcontroller1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
[navigationcontroller1.navigationBar setTintColor:[UIColor lightGrayColor]];
UINavigationController *navigationcontroller2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
[navigationcontroller2.navigationBar setTintColor:[UIColor lightGrayColor]];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller1, navigationcontroller2, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
FirstView.m
- (void) searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!noResultsToDisplay) {
PinDetailsViewController *pinDetailsViewController = [[PinDetailsViewController alloc] initWithNibName:@"PinDetailsViewController" bundle:nil];
NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath];
Pin *pin = (Pin *) managedObject;
[self.navigationItem setTitle:@"Pins"];
[self.navigationController pushViewController:pinDetailsViewController animated:YES];
[pinDetailsViewController updateWithPin:pin];
}
}
如果您需要其他任何东西,尽管问,但我认为这一切都在那里。
【问题讨论】:
-
请贴一些代码。否则很难看出问题出在哪里。
标签: objective-c ios uinavigationcontroller