我在UIViewController
内有两个UINavigationController
。最上面的hidesBottomBarWhenPushed
设置为YES
。当我按下最顶层的UIViewController
时,它的UITableView
被推到应该高出的20px处(注意推出的视图控制器的顶部到单元格之间的单元高度的差异)。
在下面的屏幕截图中与单元格位置进行比较:
此外,当我弹出最顶层的UIViewController
时,它的UITableView
被推到应该低于20px的位置(注意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:]
{{1}} {{1}} {{1}} {{1}} {{1}} {{1}}这不太理想。
答案 0 :(得分: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&#39 {s} init
方法中。