8

以下のコードを使用して QLPreviewcontroller を使用し、アプリでいくつかのドキュメントを表示しています。

let ql = QLPreviewController()
ql.dataSource = self
//ql.navigationItem.rightBarButtonItems = nil
ql.navigationItem.rightBarButtonItem = nil
presentViewController(ql, animated: true, completion: nil)

QLPreviewcontroller の右上に共有ボタンを配置したくありません。rightBarButtonItemnil に設定しようとしましたが、うまくいきません。

どうすればそれを隠すことができますか?

4

9 に答える 9

6

iOS 10の Swift 3 では、これらのソリューションはどれもうまくいきませんでした。問題は、viewDidAppear メソッドの後に [共有] ボタンが作成されることです。

共有ボタンを削除するために私が従った手順は次のとおりです。

1) QLPreviewController をサブクラス化しました

2)このサブクラスでドキュメントを開くメソッドを作成しました:

func show(controller: UIViewController, url: NSURL) {
    // Refreshing the view
    self.reloadData()
    // Printing the doc
    if let navController = controller.navigationController {
        navController.pushViewController(self, animated: true)
    }
    else {
        controller.show(self, sender: nil)
    }
}

3) viewDidLayoutSubviews で、共有ボタンを置き換えるダミーのボタン項目を作成しました。

 override func viewDidLayoutSubviews() {
    navigationItem.rightBarButtonItems?[0] = UIBarButtonItem()
}

4) 別の VC でドキュメントを開きたい場合は、次のように呼び出します。

 QLSubclass().show(controller: self, url: path as NSURL)

注 : 共有ボタンが消える前に常に表示されるため、インスタンス化したグローバル変数ではなく、常にこの方法で呼び出します。

于 2017-02-20T17:20:21.400 に答える