0

UIViewController在 a 中有两个 s UINavigationController。最顶部已hidesBottomBarWhenPushed设置为YES。当我推 topmostUIViewController时,它UITableView被推到它应该在的位置上方大约 20 像素(注意顶部到被推视图控制器的单元格之间的单元格高度差异)。

推送 UIViewController,隐藏 UIToolBar

与下面屏幕截图中的单元格位置进行比较:

推送 UIViewController,隐藏 UIToolBar

此外,当我弹出 topmost 时UIViewController,它UITableView会被推到它应该在的位置下方约 20 像素(请注意 上方的额外深蓝色空间UITableView)。

在此处输入图像描述

我已经尝试将我的-[UIViewController setHidesBottomBarWhenPushed:YES]呼叫转移到-[UIViewController loadView]-[UIViewController viewWillAppear:]-[UIViewController viewDidAppear:]。那些回调都太晚了,因为UIViewController已经被推送了,所以UIToolbar没有隐藏。

有没有办法避免这些差距?目前,我正在调用-[UINavigationController setToolbarHidden:YES animated:NO]我最顶层UIViewController-[UIViewController viewDidAppear:]-[UINavigationController setToolbarHidden:NO animated:NO]底层UIViewController-[UIViewController viewDidAppear:]。这不太理想。

4

1 回答 1

0

假设A推动B。根据您的描述,听起来 B 不应该知道它所呈现的任何东西都有一个工具栏。相反,当 A 推动 B 时,A 知道 B 不应该有 A 的工具栏。那么为什么不在初始化 B 时设置它呢?

BController *b = [[BController alloc] init];
b.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:b animated:YES];

或者,如果您认为 B 确实需要控制这种行为,您可以将其放入 B 的init方法中。

于 2013-01-24T02:13:56.133 回答