我目前有一个UIView,它以编程方式在其中嵌入了QLPreviewController。我需要摆脱加载文档/网址时QLPreviewController所具有的默认导航栏。有没有办法做到这一点?
目前,我已尝试在<ul>
<li><a href="#"><b>TANYA RUMPFF</b>Songs of a bird</a>
</li>
</ul>
集合viewDidAppear
中对QLPreviewController进行子类化。但这不起作用。
很抱歉,如果这是一个欺骗性的问题 - 过去几天我一直在网上查找,并且找不到iOS 8/9的具体答案。
答案 0 :(得分:1)
我使用addChildViewController
解决了这个问题- (void)viewDidLoad {
[super viewDidLoad];
[self setupPreviewController];
}
- (void)setupPreviewController {
self.previewController = [[QLPreviewController alloc] init];
[self addChildViewController:self.previewController];
[self.view addSubview:self.previewController.view];
//do autolayout
[self.previewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.right.bottom.equalTo(self.view);
}];
self.navigationController.navigationBarHidden = YES;
}
答案 1 :(得分:0)
同样适用于viewWillAppear和viewDidLoad方法 self.navigationController!.navigationBarHidden = true
我希望这会有所帮助
答案 2 :(得分:0)
似乎确实可行。在运行时检查视图层次结构后,我发现您看到的导航栏实际上是视图控制器视图的子视图。下面的代码将其删除;但是,它不会消失,并且似乎没有任何批准的方式可以修改此类的UI元素。此类的任何修改都将是脆弱的hack,我建议您找到一些可定制的东西。
class MyPreviewViewController: QLPreviewController {
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let subviewsWithNav = self.view.subviews.first?.subviews {
for view in subviewsWithNav {
if let navbar = view as? UINavigationBar {
navbar.isHidden = true
}
}
}
}
}