在iOS中隐藏QLPreviewController RightBarButtonItem/RightBarButton



我的应用程序支持iOS8+设备。我想从导航栏中隐藏右侧的"操作"按钮。通过研究,我发现了以下几种解决方法:

1. 创建QLPreviewController的子类,并在ViewDidAppear中将RightBarButtonItems设置为零。

public class PdfViewController : QLPreviewController
{
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
NavigationItem.SetRightBarButtonItems (new UIKit.UIBarButtonItem[0], false);
}
}

在这种情况下,问题是RightBarButtonItem出现然后消失。意思是,当用户能够点击RightBarButtonItem按钮时。我不想要这种行为。

2.创建UIViewController并添加QLPreviewController作为子ViewController。

void BtnShowPdf_Clicked(对象发送方,EventArgs e){

var dummyVC = new UIViewController ();
var pdfVC = new PdfViewController ();
dummyVC.AddChildViewController (pdfVC);
dummyVC.View.AddSubview (pdfVC.View);
dummyVC.NavigationItem.SetRightBarButtonItems (new UIBarButtonItem[0], false);
dummyVC.EdgesForExtendedLayout = UIRectEdge.None;
dummyVC.AutomaticallyAdjustsScrollViewInsets = false;
dummyVC.View.BackgroundColor = UIColor.Clear;
pdfVC.EdgesForExtendedLayout = UIRectEdge.None;
pdfVC.AutomaticallyAdjustsScrollViewInsets = false;
pdfVC.View.BackgroundColor = UIColor.Clear;
}

在这种情况下,如果我设置QLPreviewController,它将按预期工作。但是NavigationBar会变得比默认的ViewController背景颜色更暗。

深色条形图:http://screencast.com/t/bqVMv5qqGz

需要清晰的背景栏,如:http://screencast.com/t/MUwE2VnxJ7

我的问题是:

A) 我想知道哪一种是正确的隐藏方式导航栏按钮是否符合苹果公司的指导方针?如果你有正确的解决方案,那么这些也值得赞赏。

B) 此外,你能为#1或#2提出解决方案吗?

很确定你能做到这一点:

override func viewWillAppear(_ animated: Bool)
{
super.viewWillAppear(animated)
self.navigationItem.rightBarButtonItems = nil
}

相关内容

  • 没有找到相关文章

最新更新