gpt4 book ai didi

objective-c - iOS 6 上出现导航栏和表格 View 之间的黑条

转载 作者:行者123 更新时间:2023-12-01 17:59:27 25 4
gpt4 key购买 nike

自从我开始使用iOS 6以来,我似乎遇到了一个问题,在使用iOS 5时没有出现。起初我以为这可能只是一个模拟器错误,但自从我今天在我的iPhone 5上测试它后,我可以看到这不仅仅是在模拟器中。

我正在以编程方式创建所有内容——我似乎更喜欢这样做(我认为这是因为我的 HTML/CSS 背景!)——但我对 Objective-C 还是相当陌生,我找不到完整的例子关于如何以编程方式设置导航 Controller /表格 View ,所以我从我能找到的大量信息中将它们放在一起,因此,我可能会做一些根本错误的事情。但是,它在 iOS 5 上运行良好(并且仍然运行良好)。

问题是我在导航栏和表格 View 之间有一个黑条,但奇怪的是,如果我推送一个 View 并返回到原来的 View ,该条就会消失,直到我完全重新启动后才会重新出现应用程序。

下图是启动时的应用程序 (1),当我在 (2) 中推送一个 View 时,以及在我回到它 (3) 之后的初始 View :


这就是我的代码:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

RootViewController *rootController = [[RootViewController alloc] init];
self.window.rootViewController = rootController;

self.navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
[self.window addSubview:navigationController.view];

[self.window makeKeyAndVisible];

NSLog(@"Window frame: %@", NSStringFromCGRect(self.window.frame));

return YES;
}

RootViewController.m
- (void)loadView
{
self.title = @"Title";

self.tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] bounds] style:UITableViewStylePlain];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.view = self.tableView;

NSLog(@"tableView frame: %@", NSStringFromCGRect(self.tableView.frame));

UIBarButtonItem *newViewButton = [[UIBarButtonItem alloc] initWithTitle:@"New View"
style:UIBarButtonItemStylePlain
target:self
action:@selector(newViewButtonTapped:)];
[self.navigationItem setRightBarButtonItem:newViewButton animated:NO];
}

我添加了 NSLogs 以查看它们是否显示了任何可能对我有帮助的内容。输出是:
tableView frame: {{0, 0}, {320, 480}}
Window frame: {{0, 0}, {320, 480}}

谁能给我任何关于我做错了什么的想法?似乎有类似/相同的问题( Black bar overtop navigation bar - 在评论中),但我还没有找到答案。

提前致谢!

最佳答案

您将 RootViewController 添加到窗口两次,一次是通过设置 UIWindow.rootViewController (在内部执行 [window addSubview:rootViewController.view] ),另一次是通过将其添加为导航 Controller 的 subview 。

你应该这样做:

RootViewController *rootController = [[RootViewController alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];
self.window.rootViewController = navigationController;

根据经验,除非您知道自己确实想要,否则永远不要将 View 直接添加到窗口中。

关于objective-c - iOS 6 上出现导航栏和表格 View 之间的黑条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547570/

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