gpt4 book ai didi

objective-c - NavigationBar 在 pushViewController 时不显示正确

转载 作者:可可西里 更新时间:2023-11-01 03:06:29 25 4
gpt4 key购买 nike

这个问题用图片很容易理解。我有一个 UINavigationController,允许用户在 View 之间切换。

第一个 View 包含一个搜索栏和一个表格 View ,如下所示:enter image description here

第二个是显示单元格信息的基本 View

当我点击搜索栏时,导航 Controller 被隐藏,搜索栏现在位于顶部。

现在,如果我点击一个单元格,它会转到第二个 View ,但导航栏首先隐藏起来,如下所示:

enter image description here

然后,它会自动显示为:

enter image description here

我已经尝试了一些东西,比如在推送下一个 View Controller 之前显示导航栏,但它非常丑陋..有谁知道如何在第二个 View 上直接显示导航栏(比如在联系人应用程序中)?

[更新]:代码

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];
}
}

如果您还需要什么,尽管问,但我想这里都有。

最佳答案

尝试在每个 View Controller 中使用此代码。

- (void) viewWillAppear:(BOOL)animated
{

[self.navigationController setNavigationBarHidden:NO animated:animated];

}


- (void) viewWillDisappear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];

}

关于objective-c - NavigationBar 在 pushViewController 时不显示正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com