UIDocumentInteractionController — egy iOS vezérlő dokumentumok előnézetéhez és fájlok megosztásához alkalmazások között. Megvalósítja az Open In funkciót, lehetővé téve a felhasználónak, hogy megnyisson egy fájlt bármely kompatibilis alkalmazásban, elküldje e-mailben, vagy felhőtárhelyen mentse. Az Apple Developer Documentation (2025) szerint a vezérlő támogatja a beépített Preview-t is PDF-ek, képek és irodai dokumentumok megtekintéséhez.
Főbb pontok
UIDocumentInteractionController — egy UIKit osztály, amely rendszerfelületet biztosít a dokumentumokkal való munkához. Ellentétben az UIDocumentPickerViewController-rel, amely fájlokat választ ki, ez a vezérlő egy már meglévő alkalmazásfájllal dolgozik, és műveleteket kínál a felhasználónak: előnézet, megnyitás másik alkalmazásban, nyomtatás vagy küldés.
A vezérlő nem ViewController — nem a present-en keresztül hívódik meg. Ehelyett rendszerművelet-menüt jelenít meg a presentOptionsMenu vagy presentPreview metóduson keresztül. A menü az összes olyan alkalmazást mutatja, amely regisztrálva van az adott fájltípus feldolgozására.
Az UIDocumentInteractionController iOS 2.0 óta érhető el, és az egyik legrégebbi API a dokumentumokkal való munkához. Kora ellenére továbbra is releváns az Open In funkció és a beépített előnézet külső könyvtárak nélküli megvalósításához.
Preview — egy beépített dokumentumnézegető, amelyet az UIDocumentInteractionController biztosít. Támogatja a PDF-eket, képeket, szövegfájlokat és irodai dokumentumokat (beleértve a .doc, .xls, .ppt formátumokat). A Preview egy átmeneti animációval jelenik meg, hasonlóan a szabványos Quick Look-hoz.
A Preview elindításához hívja meg a presentPreview metódust. A vezérlő delegált igényel a previewControllerForDocumentInteractionController metódus implementációjával, amely egy UIViewController-t ad vissza a dokumentum megjelenítéséhez. Általában self vagy egy navigációs vezérlő kerül visszaadásra.
A beépített Preview nem igényel további keretrendszereket vagy licenceket. Bármely fájllal működik, amelynek URL-je átadásra került a url tulajdonságnak. A felhasználó lapozhatja a PDF-oldalakat, nagyíthatja a képeket és másolhat szöveget a dokumentumokból.
Open In — az UIDocumentInteractionController kulcsfontosságú funkciója. Megjeleníti azoknak az alkalmazásoknak a listáját, amelyek megnyithatják ezt a fájltípust. A felhasználó kiválasztja a célalkalmazást, és az iOS átmásolja a fájlt annak homokozójába, elindítva az alkalmazást a dokumentummal való munkához.
Az alkalmazások listája automatikusan képződik a többi alkalmazás Info.plist fájljában regisztrált Document Type alapján. Ha egy alkalmazás regisztrálta a PDF-támogatást, megjelenik az Open In menüben a PDF-fájlokhoz. A rendszer szabványos műveleteket is mutat: nyomtatás, e-mail küldés, mentés a Fájlokba.
Az Open In másolja a fájlt — a célalkalmazás saját másolatot kap, így a módosítások nem kerülnek vissza az eredeti alkalmazásba. Ha szerkesztés mentéssel szükséges, használja az UIDocumentPickerViewController-t export módban security-scoped URL-lel.
Az iOS 6 óta elérhető UIActivityViewController, amely szintén támogatja a fájlok küldését. Az UIDocumentInteractionController-rel ellentétben az UIActivityViewController egy rendszerművelet-lapot jelenít meg AirDrop, e-mail, üzenetek és egyéni UIActivity támogatásával. Egyszerű fájlküldéshez az UIActivityViewController ajánlott modernebb API-ként.
Az Open In megvalósítása az UIDocumentInteractionController-en keresztül mindössze néhány sornyi kódot igényel: példány létrehozása, URL és delegált beállítása, presentOptionsMenu meghívása. A vezérlő automatikusan összegyűjti az elérhető alkalmazások listáját a fájltípus alapján.
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
)
}
}
A beépített nézegető megjelenítéséhez az Open In menü helyett használja a presentPreview metódust. A vezérlő teljes képernyőn jeleníti meg a dokumentumot lapozási lehetőséggel. A delegáltnak implementálnia kell a previewControllerForDocumentInteractionController metódust, amely egy UIViewController-t ad vissza a megjelenítéshez.
UIDocumentInteractionControllerDelegate kezeli a menü és a Preview megjelenítését és elrejtését. A delegált opcionális metódusokat implementál: documentInteractionControllerWillPresentOpenInMenu a megjelenési animációhoz, documentInteractionControllerDidDismissOpenInMenu az erőforrások felszabadításához a menü bezárása után.
Fontos metódus a Preview-hoz — previewControllerForDocumentInteractionController, amelynek egy UIViewController-t kell visszaadnia a dokumentum megjelenítéséhez. Ha a metódus nincs implementálva vagy nil-t ad vissza, a Preview nem indul el. Általában self vagy egy UINavigationController kerül visszaadásra, amely self-et tartalmaz.
A vezérlő támogatja a documentInteractionController:didEndSendingToApplication metódust is, amely a fájl sikeres átvitele után hívódik meg egy másik alkalmazásba. Ez lehetővé teszi az ideiglenes fájl törlését vagy a felület frissítését az alkalmazásba való visszatérés után.
UIDocumentInteractionController és UIDocumentPickerViewController különböző feladatokat old meg, bár mindkettő dokumentumokkal dolgozik. A fő különbség: az UIDocumentInteractionController egy meglévő fájlt továbbít egy másik alkalmazásba, míg az UIDocumentPickerViewController egy fájlt választ ki külső forrásból az aktuális alkalmazás számára.
| Paraméter | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Cél | Fájl küldése másik alkalmazásba | Fájl kiválasztása másik forrásból |
| Forrás | Az alkalmazás saját fájlja | Bármely tárhely (iCloud, Fájlok, harmadik fél) |
| Mód | A fájl másolatának küldése a címzettnek | Import vagy Export az aktuális alkalmazáshoz |
| Felület | Rendszermenü (Action Sheet) | Teljes fájlböngésző |
| Visszatérés | Nem ad vissza eredményt | A kiválasztott fájl URL-je a delegáltan keresztül |
Az UIDocumentInteractionController nem igényel delegáltat az alapműködéshez — a menü a metódusok implementációja nélkül is megjelenik. Az UIDocumentPickerViewController delegált nélkül haszontalan — a kiválasztás eredménye nem kerül feldolgozásra. Az API kiválasztása a forgatókönyvtől függ: fájl küldése → UIDocumentInteractionController, fájl fogadása → UIDocumentPickerViewController.
Gyakran ismételt kérdések
UIDocumentInteractionController — egy UIKit vezérlő dokumentumok előnézetéhez és fájlok átviteléhez alkalmazások között az Open In funkció és a beépített Preview segítségével.
Hozzon létre egy példányt, állítsa be a url tulajdonságot a célfájlra, adja meg a delegáltat, és hívja meg a presentOptionsMenu metódust. A rendszer megjeleníti az adott fájltípust támogató alkalmazások listáját.
UIDocumentInteractionController Preview — beépített nézegető egy dokumentumhoz alapvető képességekkel. Quick Look (QLPreviewController) — egy külön keretrendszer kötegelt megtekintés, bővítmények és további fájlformátumok támogatásával.
A delegált opcionális az alapműködéshez — a menü nélküle is megjelenik. Delegált csak a Preview-hoz (previewControllerForDocumentInteractionController metódus) és a fájlküldés befejezésének nyomon követéséhez szükséges.
UIDocumentInteractionController egy meglévő fájlt küld az alkalmazásból egy másikba. UIDocumentPickerViewController egy fájlt választ ki külső forrásból az aktuális alkalmazásba. Az első — küldésre, a második — fogadásra.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is