从详细信息视图返回时,UITableView与状态和导航栏重叠

时间:2014-10-08 14:06:18

标签: ios objective-c xcode uitableview statusbar

如前所述,在初始化TableView时效果很好。

Initial View

我在详细视图中使用此代码来清除状态栏:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
self.navigationController.view.backgroundColor = [UIColor clearColor];

从DetailView返回后,会发生类似这样的事情:

View after returning from detail

我在self.tableView.contentInset- (void)viewDidLoad中尝试了- (void)viewDidAppear,但它无效。

最初的ViewController是UITableViewController的子类,而不是UIViewController。

2 个答案:

答案 0 :(得分:1)

两个视图控制器都可能在同一个UINavigationController中。这意味着他们也共享相同的UINavigationBar。返回初始视图控制器时,需要设置navigationBar的初始值。现在,当您返回时,细胞与导航栏重叠,因为条形是半透明的。在第一个视图控制器-viewWillAppear方法上设置这些值。

self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.backgroundColor = #BARCOLOR;

答案 1 :(得分:0)

将属性self.navigationController.navigationBar.translucent设置为NO。我的意思是替换代码self.navigationController.navigationBar.translucent = YES;

self.navigationController.navigationBar.translucent = NO;

希望这应该有用。