2017-03-27 30 views
5

Có thể thay đổi tiêu đề của một mục trong QLPreviewController không?Tiêu đề thay đổi QLPreviewController?

Tôi đã thử với:

  1. subclassing QLPreviewController
  2. Thêm

    override func viewDidAppear(_ animated: Bool) { 
        self.navigationController?.navigationBar.topItem?.title = "Bericht" 
    } 
    

Nhưng bạn thấy tiêu đề duy nhất cho lẽ 1/4 giây.

Bất kỳ ý tưởng nào?

+0

Làm thế nào tôi có thể đổi tên các url mà không cần đổi tên các tập tin? – derdida

Trả lời

5

Nếu bạn cần để hiển thị một danh hiệu khác ngoài các lastPathComponent từ url của bạn, bạn có thể phân lớp QLPreviewItem và cung cấp tiêu đề của riêng bạn thực hiện bất động sản bắt buộc:

Instance Tuyên bố tài sản:

var previewItemTitle: String? { get } 

Tiêu đề để hiển thị cho mục xem trước.

Nếu bạn không thực hiện một phương thức getter cho thuộc tính này, hoặc nếu phương pháp lợi nhuận của bạn Nil, QuickLook xem xét các URL hoặc nội dung của mục được xem trước để xác định một tiêu đề thích hợp để trưng bày cho người dùng . Trả lại giá trị không phải là số không cho thuộc tính này để cung cấp tiêu đề tùy chỉnh .


protocol QLPreviewItem : NSObjectProtocol 

giao thức Mô tả

Các QLPreviewItem định nghĩa các thuộc tính bạn thực hiện để làm cho nội dung ứng dụng của bạn có thể nhìn thấy trong một bản xem trước QuickLook (QLPreviewController trong iOS hoặc QLPreviewPanel trong hệ điều hành MacOS). Các phương thức trong giao thức này cũng được khai báo là một thể loại trên lớp NSURL. Kết quả là, bạn có thể sử dụng các đối tượng NSURL trực tiếp dưới dạng xem trước mục — miễn là bạn muốn sử dụng tiêu đề mặc định của các mục đó. Tiêu đề mặc định là thành phần đường dẫn cuối cùng của URL của một mục. Nếu bạn muốn cung cấp tiêu đề mục xem trước của riêng bạn, hãy tạo bản xem trước của riêng bạn đối tượng mục chấp nhận giao thức này.

Đầu tiên Subclass QLPreviewItem:

import UIKit 
import QuickLook 
class PreviewItem: NSObject, QLPreviewItem { 
    var previewItemURL: URL? 
    var previewItemTitle: String? 
} 

Sau đó, trong bộ điều khiển của bạn, bạn trả lại QLPreviewItem thay vì URL:

import UIKit 
import QuickLook 

class ViewController: UIViewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource { 
    let item = PreviewItem() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     item.previewItemTitle = "Custom Title" 
     item.previewItemURL = Bundle.main.url(forResource: "your file", withExtension: "ext") 
    } 
    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     quickLook() 
    } 
    func numberOfPreviewItems(in controller: QLPreviewController) -> Int { 
     return 1 
    } 
    func quickLook() { 
     let preview = QLPreviewController() 
     preview.delegate = self 
     preview.dataSource = self 
     preview.currentPreviewItemIndex = 0 
     present(preview, animated: true) 
    } 
    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { 
     return item 
    } 
} 
Các vấn đề liên quan