UIDocumentInteractionController — iOS-da hujjatlarni oldindan ko'rish va ilovalar o'rtasida fayllarni almashish uchun boshqaruvchi. U Open In funksiyasini amalga oshirib, foydalanuvchiga faylni istalgan mos ilovada ochish, pochta orqali yuborish yoki bulutli saqlashda saqlash imkonini beradi. Apple Developer Documentation (2025) ma'lumotlariga ko'ra, boshqaruvchi PDF, rasmlar va ofis hujjatlarini ko'rish uchun o'rnatilgan Preview-ni ham qo'llab-quvvatlaydi.
Asosiy nuqtalar
UIDocumentInteractionController — hujjatlar bilan ishlash uchun tizim interfeysini taqdim etuvchi UIKit sinfidir. UIDocumentPickerViewController fayllarni tanlagan holda, bu boshqaruvchi allaqachon mavjud ilova fayli bilan ishlaydi va foydalanuvchiga amallarni taklif qiladi: oldindan ko'rish, boshqa ilovada ochish, chop etish yoki yuborish.
Boshqaruvchi ViewController emas — present orqali chaqirilmaydi. Buning o'rniga, presentOptionsMenu yoki presentPreview metodi orqali tizim amallar menyusini ko'rsatadi. Menyu berilgan fayl turini qayta ishlash uchun ro'yxatdan o'tgan barcha ilovalarni ko'rsatadi.
UIDocumentInteractionController iOS 2.0 dan boshlab mavjud va hujjatlar bilan ishlash uchun eng qadimgi API-lardan biridir. Yoshiga qaramay, Open In funksiyasini va tashqi kutubxonalarsiz o'rnatilgan ko'rishni amalga oshirish uchun dolzarb bo'lib qolmoqda.
Preview — UIDocumentInteractionController tomonidan taqdim etilgan o'rnatilgan hujjat ko'ruvchi. U PDF, rasmlar, matn fayllari va ofis hujjatlarini (.doc, .xls, .ppt o'z ichiga olgan holda) qo'llab-quvvatlaydi. Preview standart Quick Look-ga o'xshash o'tish animatsiyasi bilan ko'rsatiladi.
Preview-ni ishga tushirish uchun presentPreview metodini chaqiring. Boshqaruvchi hujjatni ko'rsatish uchun UIViewController qaytaradigan previewControllerForDocumentInteractionController metodining amalga oshirilishi bilan delegatni talab qiladi. Odatda self yoki navigatsiya boshqaruvchisi qaytariladi.
O'rnatilgan Preview qo'shimcha frameworklar yoki litsenziyalarni talab qilmaydi. URL-i url xususiyatiga uzatilgan har qanday fayl bilan ishlaydi. Foydalanuvchi PDF sahifalarini varaqlashi, rasmlarni masshtablashi va hujjatlardan matn nusxalashi mumkin.
Open In — UIDocumentInteractionController-ning asosiy funksiyasi. Berilgan fayl turini ochishi mumkin bo'lgan ilovalar ro'yxatini ko'rsatadi. Foydalanuvchi maqsadli ilovani tanlaydi va iOS faylni uning sandbox-iga nusxalab, hujjat bilan ishlash uchun ilovani ishga tushiradi.
Ilovalar ro'yxati boshqa ilovalarning Info.plist da ro'yxatdan o'tgan Document Type asosida avtomatik shakllanadi. Agar ilova PDF qo'llab-quvvatlashni ro'yxatdan o'tkazgan bo'lsa, PDF fayllari uchun Open In menyusida paydo bo'ladi. Tizim, shuningdek, standart amallarni ko'rsatadi: chop etish, pochta orqali yuborish, Fayllarda saqlash.
Open In faylni nusxalaydi — maqsadli ilova o'z nusxasini oladi, shuning uchun o'zgarishlar asl ilovaga qaytmaydi. Agar saqlash bilan tahrirlash talab etilsa, security-scoped URL bilan export rejimida UIDocumentPickerViewController-dan foydalaning.
iOS 6 dan boshlab UIActivityViewController mavjud bo'lib, u ham fayl yuborishni qo'llab-quvvatlaydi. UIDocumentInteractionController-dan farqli o'laroq, UIActivityViewController AirDrop, pochta, xabarlar va maxsus UIActivity qo'llab-quvvatlashi bilan tizim amallar varag'ini ko'rsatadi. Oddiy fayl yuborish uchun UIActivityViewController zamonaviyroq API sifatida tavsiya etiladi.
Open In ni UIDocumentInteractionController orqali amalga oshirish bir necha qator kodni talab qiladi: namunani yaratish, URL va delegatni o'rnatish, presentOptionsMenu chaqirish. Boshqaruvchi fayl turiga asoslanib mavjud ilovalar ro'yxatini avtomatik to'playdi.
class DocumentViewController: UIViewController {
lazy var interactionController = UIDocumentInteractionController()
func shareFile(url: URL) {
interactionController.url = url
interactionController.uti = url.utiType()
interactionController.delegate = self
interactionController.presentOptionsMenu(
from: self.view.bounds,
in: self.view,
animated: true
)
}
}
Open In menyusi o'rniga o'rnatilgan ko'ruvchini ko'rsatish uchun presentPreview metodidan foydalaning. Boshqaruvchi hujjatni varaqlash imkoniyati bilan to'liq ekranda ko'rsatadi. Delegat ko'rsatish uchun UIViewController qaytaradigan previewControllerForDocumentInteractionController metodini amalga oshirishi kerak.
UIDocumentInteractionControllerDelegate menyu va Preview-ni ko'rsatish va yashirishni boshqaradi. Delegat ixtiyoriy metodlarni amalga oshirishi mumkin: paydo bo'lish animatsiyasi uchun documentInteractionControllerWillPresentOpenInMenu, menyu yopilgandan keyin resurslarni tozalash uchun documentInteractionControllerDidDismissOpenInMenu.
Preview uchun muhim metod — previewControllerForDocumentInteractionController, hujjatni ko'rsatish uchun UIViewController qaytarishi kerak. Agar metod amalga oshirilmagan bo'lsa yoki nil qaytarsa, Preview ishga tushmaydi. Odatda self yoki self ni o'z ichiga olgan UINavigationController qaytariladi.
Boshqaruvchi, shuningdek, fayl boshqa ilovaga muvaffaqiyatli uzatilgandan keyin chaqiriladigan documentInteractionController:didEndSendingToApplication metodini qo'llab-quvvatlaydi. Bu vaqtinchalik faylni tozalash yoki ilovaga qaytgandan keyin interfeysni yangilash imkonini beradi.
UIDocumentInteractionController va UIDocumentPickerViewController turli vazifalarni hal qiladi, garchi ikkalasi ham hujjatlar bilan ishlaydi. Asosiy farq: UIDocumentInteractionController mavjud faylni boshqa ilovaga uzatadi, UIDocumentPickerViewController esa joriy ilova uchun tashqi manbadan fayl tanlaydi.
| Parametr | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Maqsad | Faylni boshqa ilovaga yuborish | Boshqa manbadan fayl tanlash |
| Manba | Ilovaning o'z fayli | Har qanday saqlash (iCloud, Fayllar, uchinchi tomon) |
| Rejim | Fayl nusxasini qabul qiluvchiga yuborish | Joriy ilova uchun Import yoki Export |
| Interfeys | Tizim menyusi (Action Sheet) | To'liq fayl brauzeri |
| Natija | Natija qaytarmaydi | Delegat orqali tanlangan fayl URL-i |
UIDocumentInteractionController talab qilmaydi asosiy ish uchun delegat — menyu metodlar amalga oshirilmagan bo'lsa ham ko'rsatiladi. UIDocumentPickerViewController delegatsiz foydasiz — tanlov natijasi qayta ishlanmaydi. API tanlovi stsenariyga bog'liq: fayl yuborish → UIDocumentInteractionController, fayl qabul qilish → UIDocumentPickerViewController.
Tez-tez beriladigan savollar
UIDocumentInteractionController — Open In funksiyasi va o'rnatilgan Preview orqali hujjatlarni oldindan ko'rish va ilovalar o'rtasida fayl uzatish uchun UIKit boshqaruvchisi.
Namuna yarating, url xususiyatini maqsadli faylga o'rnating, delegatni belgilang va presentOptionsMenu ni chaqiring. Tizim berilgan fayl turini qo'llab-quvvatlovchi ilovalar ro'yxatini ko'rsatadi.
UIDocumentInteractionController Preview — asosiy imkoniyatlar bilan bitta hujjat uchun o'rnatilgan ko'ruvchi. Quick Look (QLPreviewController) — ommaviy ko'rish, kengaytmalar va qo'shimcha fayl formatlarini qo'llab-quvvatlovchi alohida framework.
Delegat asosiy ish uchun ixtiyoriy — menyu unsiz ham ko'rsatiladi. Delegat faqat Preview (previewControllerForDocumentInteractionController metodi) va fayl yuborish tugashini kuzatish uchun talab qilinadi.
UIDocumentInteractionController ilovadan boshqa ilovaga mavjud faylni yuboradi. UIDocumentPickerViewController joriy ilovaga tashqi manbadan fayl tanlaydi. Birinchisi — yuborish uchun, ikkinchisi — qabul qilish uchun.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.