반응형
iOS 16.1, Xcode 14.2, Swift 5, UIKit 환경에서 진행했습니다.
DocumentPickerController에서 forOpeningContentTypes의 타입을 설정하고 초기화를 한 후
present로 pickerController를 띄어준다.설정된 타입은 png로 하였는데, png 파일만 선택이 가능하게끔 됩니다.
import MobileCoreServices
import UniformTypeIdentifiers
@IBAction func didTapDocument(_ sender: UIButton) {
let types = UTType(tag: "png", tagClass: UTTagClass.filenameExtension, conformingTo: nil)
let documentPickerController = UIDocumentPickerViewController(forOpeningContentTypes: [types!])
documentPickerController.delegate = self
self.present(documentPickerController, animated: true, completion: nil)
}
Delegate는 Document 클릭 시 등의 DocumentPicker에 대한 설정을 할 수 있습니다.
extension MainViewController: UIDocumentPickerDelegate, UINavigationControllerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
print("didPickDocumentsAt = \(urls)")
}
}
설정은 프로젝트 설정 - Signing & Capablilities에 +Capablity에서 iCloud를 추가한 뒤에
아래와 같이 Key-value storage를 선택하면 됩니다.
전체코드
class ViewController: UIViewController {
...
@IBAction func didTapDocument(_ sender: UIButton) {
let types = UTType(tag: "png", tagClass: UTTagClass.filenameExtension, conformingTo: nil)
let documentPickerController = UIDocumentPickerViewController(forOpeningContentTypes: [types!])
documentPickerController.delegate = self
self.present(documentPickerController, animated: true, completion: nil)
}
}
extension ViewController: UIDocumentPickerDelegate, UINavigationControllerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
print("didPickDocumentsAt = \(urls)")
}
}
결과
참조
https://stackoverflow.com/questions/37296929/implement-document-picker-in-swift-ios
반응형
'iOS > 코드조각' 카테고리의 다른 글
[iOS, Swift] Keyboard로 인해 가려진 뷰 올리기 (0) | 2023.02.22 |
---|---|
[iOS, Swift] Safe Area 높이 구하기 (0) | 2023.02.21 |
[iOS, Swift] UITextField 키보드 스타일 변경하기 (0) | 2023.02.20 |
[iOS, Swift] UITextField 테두리(border) 없애기 (0) | 2023.02.19 |
[iOS, Swift] MapKit 사용하여 현재 위치 나타내기 (0) | 2023.02.16 |