Ошибка «Не удается присвоить значение типа« Void »типу PDFAction?» »При установке действия для PDFAnnotation - PullRequest
0 голосов
/ 18 января 2019

В приложении PDF Viewer я успешно открыл PDF и отобразил весь его контент. PDF-файл, который приложение всегда будет отображать, довольно большой - 130 страниц. На второй странице PDF есть оглавление. Я хочу добавить PDFButton к тексту и перейти к нужной странице в PDF-файле, выбранном пользователем.

Мой текущий код отображает кнопку, но действие, которое я хочу, чтобы кнопка выполняла, приводит к ошибке:

Невозможно присвоить значение типа «Void» типу «PDFAction?»

Вот код, который я пробовал:

func insertResetButtonInto(_ page: PDFPage, GoTo: PDFPage) {
    let resetButtonBounds = CGRect(x: 90, y: 200, width: 200, height: 15)
    let resetButton = PDFAnnotation(bounds: resetButtonBounds, forType: PDFAnnotationSubtype(rawValue: PDFAnnotationSubtype.widget.rawValue), withProperties: nil)
    resetButton.widgetFieldType = PDFAnnotationWidgetSubtype(rawValue: PDFAnnotationWidgetSubtype.button.rawValue)
    resetButton.widgetControlType = .pushButtonControl
    resetButton.backgroundColor = UIColor.green
    page.addAnnotation(resetButton)

    // Create PDFActionResetForm action to clear form fields.
    resetButton.action = pdfView.go(to: page)
}

Как создать кнопку в PDF, которая работает как последовательность или функция прокрутки, которая переводит пользователя на другую страницу в том же документе PDF?

1 Ответ

0 голосов
/ 18 января 2019

Вы пытаетесь присвоить функцию переменной, которая ожидает PDFAction. Замените строку, которая выдает ошибку, следующим текстом:

resetButton.action = PDFActionGoTo(destination: PDFDestination(page: page, at: .zero))

Это передает PDFDestination со страницей, которую вы инициализировали ранее, инициализатору PDFActionGoTo(destination:).

Если вы хотите изменить точку назначения, измените параметр at инициализатора PDFDestination на другое значение CGPoint:

let point = CGPoint(x: 50, y: 100)
resetButton.action = PDFActionGoTo(destination: PDFDestination(page: page, at: point))
...