This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /guides/ios/samples/persist-view-settings.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. Persist view settings using Swift for iOS

Persist PDFSettingsViewController options set by your user via UserDefaults.


//
// Copyright © 2019-2026 PSPDFKit GmbH. All rights reserved.
//
// The Nutrient sample applications are licensed with a modified BSD license.
// Please see License for details. This notice may not be removed from this file.
//
import PSPDFKit
import PSPDFKitUI
class PersistViewSettingsExample: Example, PDFViewControllerDelegate {
let pageTransition = "pageTransition"
let pageMode = "pageMode"
let scrollDirection = "scrollDirection"
let spreadFitting = "spreadFitting"
override init() {
super.init()
contentDescription = "Shows how to persist PDFSettingsViewController options using UserDefaults."
category = .controllerCustomization
}
override func invoke(with delegate: ExampleRunnerDelegate) -> UIViewController {
let document = AssetLoader.writableDocument(for: .welcome, overrideIfExists: false)
let controller = PDFViewController(document: document, delegate: self) {
// Configure the `PDFSettingsViewController`'s options.
$0.settingsOptions = [.pageTransition, .pageMode, .scrollDirection, .spreadFitting]
// Restore the settings from the user defaults.
let defaults = UserDefaults.standard
$0.pageTransition = PageTransition(rawValue: UInt(defaults.integer(forKey: self.pageTransition)))!
$0.pageMode = PageMode(rawValue: UInt(defaults.integer(forKey: self.pageMode)))!
$0.scrollDirection = ScrollDirection(rawValue: UInt(defaults.integer(forKey: self.scrollDirection)))!
$0.spreadFitting = PDFConfiguration.SpreadFitting(rawValue: defaults.integer(forKey: self.spreadFitting))!
}
// Configure the left bar button items.
controller.navigationItem.setLeftBarButtonItems([controller.settingsButtonItem], animated: false)
controller.navigationItem.leftItemsSupplementBackButton = true
return controller
}
// MARK: - PDFViewControllerDelegate
func pdfViewControllerDidDismiss(_ pdfController: PDFViewController) {
// Persist the settings options in the user defaults.
let defaults = UserDefaults.standard
defaults.set(pdfController.configuration.pageTransition.rawValue, forKey: pageTransition)
defaults.set(pdfController.configuration.pageMode.rawValue, forKey: pageMode)
defaults.set(pdfController.configuration.scrollDirection.rawValue, forKey: scrollDirection)
defaults.set(pdfController.configuration.spreadFitting.rawValue, forKey: spreadFitting)
}
}

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.