mac の NSSavePanel
や NSOpenPanel
に対応するのは UIDocumentPickerViewController
です。
let vc = UIDocumentPickerViewController(documentTypes: [kUTTypeFolder as String], in: .open) vc.delegate = self present(vc, animated: true, completion: nil)
みたいなコードで NSSavePanel
のシートがウインドウから表示されます。何か保存するためにフォルダを選択させたいときは↑のように documentTypes: [kUTTypeFolder as String], in: .open
を指定したらいいみたい。
シートが完了すると delegate で保存先のフォルダの URL が取得できます。
ここからは sandbox 対応の話ですが、後でアクセスできるように URL を UserDefaults 等に保存する時は
let data = try url.bookmarkData()
等として bookmark data を保存します。
読み出す時は
var isSlate = false let url = try URL(resolvingBookmarkData: data, bookmarkDataIsStale: &isSlate)
のようにすると bookmark data から url を取得できます。