2016-05-23 2 views
0

Mon application prend en charge les appareils iOS8 +. Je veux cacher le bouton d'action à droite de la barre de navigation. Par la recherche que j'ai trouvé quelques solutions de contournement suivantes:Un moyen valide de masquer QLPreviewController RightBarButtonItem/RightBarButtonItems Xamarin iOS

1. Créer une sous classe de QLPreviewController et ViewDidAppear SetRightBarButtonItems à zéro.

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

Dans ce cas, le problème est RightBarButtonItem apparaît puis disparaît. En moyenne, l'utilisateur peut cliquer sur ce bouton RightBarButtonItem. Je ne veux pas de ce comportement.

2. Créer UIViewController et ajouter QLPreviewController comme enfant ViewController.

vide BtnShowPdf_Clicked (object sender, 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; 
} 

Dans ce cas Si je mets QLPreviewController cela fonctionne comme prévu. Mais NavigationBar devient plus sombre que la couleur d'arrière-plan par défaut de ViewController.

Dark Bar: http://screencast.com/t/bqVMv5qqGz

nécessaire barre de fond clair comme: http://screencast.com/t/MUwE2VnxJ7

Mes questions sont les suivantes:

A) Je voudrais savoir quelle est la bonne façon de cacher à droite bouton de barre de navigation selon les directives d'Apple? Si vous avez une solution correcte, alors ceux-ci sont également appréciés.

B) Aussi pouvez-vous suggérer des solutions pour # 1 ou # 2?

Répondre

0

Jolie que vous pouvez faire:

override func viewWillAppear(_ animated: Bool) 
    { 
     super.viewWillAppear(animated) 

     self.navigationItem.rightBarButtonItems = nil 
    }