Indonesian (Bahasa Indonesia) translation by Diangr (you can also view the original English article)
Sandboxing di iOS membuat platform jauh lebih aman dan ini pada akhirnya menguntungkan setiap pengguna platform. Namun, karena aturan ketat yang melekat pada sandboxing, berbagi data antar aplikasi tidaklah sepele. Kelas yang sering diabaikan yang membantu berbagi dokumen antar aplikasi adalah kelas UIDocumentInteractionController
. Dalam tip cepat ini, saya akan menunjukkan kepada anda bagaimana anda dapat menggunakan kelas ini untuk melihat dokumen serta membuka dokumen di aplikasi lain yang diinstal pada perangkat.
Berinteraksi dengan Dokumen
Saya harus mengakui bahwa saya sedikit terkejut mengetahui bahwa UIDocumentInteractionController
telah bersama kami sejak iOS 3.2. Kelas UIDocumentInteractionController
fleksibel dalam penggunaannya dan lebih kuat daripada yang disadari
kebanyakan orang. Tidak hanya memungkinkan pengembang untuk membuka dokumen di aplikasi lain yang diinstal pada perangkat, itu juga mendukung pratinjau, pencetakan, mengirim email, dan menyalin dokumen.
Menggunakan kelas UIDocumentInteractionController
sangatlah mudah. Langkah pertama adalah menginisialisasi instance kelas dengan menerapkan metode kelas satu-satunya, interactionControllerWithURL:
, dan meneruskan URL (NSURL
) dokumen yang ingin anda kerjakan. Setelah mengatur properti delegasi pengontrol interaksi dokumen, anda menerapkan metode delegasi yang sesuai.
Perlu diingat bahwa UIDocumentInteractionController
bukanlah subkelas dari UIViewController
. Dengan kata lain, meskipun melihat pratinjau dokumen dimediasi oleh UIDocumentInteractionController
, anda harus memberi tahu pengendali interaksi dokumen yang melihat pengontrol untuk digunakan untuk melihat pratinjau dokumen. Apa artinya ini akan menjadi jelas ketika kita membangun aplikasi sampel. Dalam contoh aplikasi, saya akan menunjukkan cara (1) melihat dokumen dan (2) membuka dokumen di aplikasi lain yang mendukung jenis file dokumen.
Langkah 1: Menyiapkan Proyek
Seperti yang saya sebutkan beberapa waktu lalu, aplikasi contoh kami akan memungkinkan pengguna untuk melihat dokumen dan membukanya dalam aplikasi lain yang diinstal pada perangkat. Yang terakhir ini sering sangat berguna jika anda ingin memberikan pengguna anda lebih banyak fleksibilitas dalam hal apa yang dapat mereka lakukan dengan data yang disimpan dalam aplikasi anda. Contoh yang umum adalah membuka foto dalam aplikasi pengeditan foto, seperti iPhoto.
Buat proyek baru di Xcode dengan memilih Templat Single View Application dari daftar templat (gambar 1). Beri nama Dokumen aplikasi anda, masukkan pengenal perusahaan, atur iPhone untuk keluarga perangkat, dan centang Gunakan Penghitungan Referensi Otomatis. Sisa dari kotak centang dapat dibiarkan tidak diperiksa untuk proyek ini (gambar 2). Beri tahu Xcode tempat anda ingin menyimpan proyek dan tekan tombol Create.



Gambar 1



Gambar 2
Langkah 2: Membuat Antarmuka Pengguna
Antarmuka pengguna aplikasi kami akan berisi dua tombol, satu untuk melihat dokumen PDF dan satu lagi untuk membuka dokumen PDF di aplikasi lain. Sebelum kita membuat antarmuka pengguna, buat aksi untuk setiap tombol dalam file implementasi pengontrol tampilan seperti yang ditunjukkan di bawah ini.
- (IBAction)previewDocument:(id)sender { }
- (IBAction)openDocument:(id)sender { }
Pilih MTViewController.xib dan seret dua instance UIButton
dari Objek Library di sebelah kanan dalam tampilan pengontrol tampilan (gambar 3). Pilih objek Pemilik File di sebelah kiri, buka Inspektur Koneksi, dan hubungkan tindakan yang kami buat beberapa saat yang lalu dengan tombol (gambar 4). Itu saja yang perlu kita lakukan di Interface Builder.



Gambar 3



Gambar 4
Langkah 3: Pratinjau Dokumen
Dokumen yang akan kami kerjakan adalah dokumen PDF. Anda dapat menggunakan dokumen PDF apa pun, tetapi saya telah menyertakan contoh dokumen PDF dengan file sumber dari tip cepat ini. Ini adalah Panduan Pemrograman iOS Apple, yang juga dapat anda temukan secara online. Seret dokumen ke dalam proyek anda dan pastikan untuk memeriksa kotak centang berlabel Salin item ke folder grup tujuan (jika diperlukan) ketika anda diminta (gambar 5). Juga pastikan bahwa dokumen tersebut ditambahkan ke target Dokumen (gambar 5).



Gambar 5
Bila menggunakan kelas
UIDocumentInteractionController
, penting untuk menjaga dua hal dalam pikiran, (1) anda perlu memegang referensi ke controller interaksi dokumen dan (2) protokol UIDocumentInteractionControllerDelegate
perlu
dilaksanakan. Mulai dengan memperbarui file header pengontrol tampilan seperti yang ditunjukkan di bawah ini untuk menginformasikan compiler bahwa kelas MTViewController
sesuai dengan protokol UIDocumentInteractionControllerDelegate
.
#import <UIKit/UIKit.h> @interface MTViewController : UIViewController <UIDocumentInteractionControllerDelegate> @end
Dalam file implementasi pengontrol tampilan, tambahkan properti pribadi jenis
UIDocumentInteractionController
dan beri nama
documentInteractionController
. Properti ini akan menyimpan referensi ke pengendali interaksi dokumen yang akan kita gunakan.
Sekarang mari kita lihat implementasi dari previewDocument:
action. Kami mulai dengan mendapatkan URL (NSURL
) dokumen. Karena dokumen adalah bagian dari bundel aplikasi, memperoleh URL dokumen sangat mudah berkat metode kenyamanan kelas NSBundle
(lihat di bawah).
- (IBAction)previewDocument:(id)sender { NSURL *URL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"pdf"]; if (URL) { // Initialize Document Interaction Controller self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:URL]; // Configure Document Interaction Controller [self.documentInteractionController setDelegate:self]; // Preview PDF [self.documentInteractionController presentPreviewAnimated:YES]; } }
Jika URL yang valid dikembalikan kepada kami, kami menginisialisasi instance kelas UIDocumentInteractionController
dan meneruskan URL dokumen. Kami menyimpan referensi ke pengontrol interaksi dokumen dalam properti documentInteractionController
yang kami buat satu menit yang lalu. Pengontrol tampilan kami akan berfungsi sebagai delegasi pengontrol interaksi dokumen. Menyajikan pratinjau dokumen PDF semudah menelepon presentPreviewAnimated:
pada
pengontrol interaksi dokumen.
Jika anda membangun dan menjalankan aplikasi sekarang, Anda akan melihat bahwa tidak ada yang terjadi ketika tombol berlabel Preview disadap. Ada satu metode delegasi yang perlu kami terapkan lebih dulu. Beberapa menit yang lalu, saya memberi tahu anda bahwa penting untuk menyadari bahwa kelas UIDocumentInteractionController
adalah subkelas dari NSObject
, bukan UIViewController
. Meskipun akan berhati-hati menampilkan dokumen, kita perlu memberi tahu pengendali interaksi dokumen yang melihat pengontrol untuk digunakan untuk melihat pratinjau dokumen. Salah satu metode delegasi dari
protokol UIDocumentInteractionControllerDelegate
meminta delegasi untuk pengontrol tampilan yang dapat digunakan untuk melihat dokumen. Metode delegasi tersebut diberi nama documentInteractionControllerViewControllerForPreview:
. Karena kami ingin menampilkan pratinjau di pengontrol tampilan utama kami, kami dapat kembali self
seperti yang ditunjukkan dalam penerapan di bawah ini. Apa artinya ini adalah bahwa pengendali interaksi dokumen akan menggunakan pengontrol tampilan kami untuk melihat dokumen PDF. Ini akan menyajikan tampilan modal di mana ia menyajikan dokumen.
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller { return self; }
Tentu saja, anda dapat memodifikasi
implementasi documentInteractionControllerViewControllerForPreview:
agar sesuai dengan kebutuhan anda. Dengan metode delegasi diimplementasikan, sekarang saatnya untuk membangun dan menjalankan aplikasi kami untuk pertama kalinya dan mencobanya (gambar 6). Perhatikan bahwa anda bahkan dapat membagikan dokumen contoh melalui email, mencetaknya, atau menyalinnya ke clipboard. Selain itu, dimungkinkan untuk membuka dokumen di aplikasi lain yang mendukung jenis file dokumen. Ketuk tombol di kanan atas untuk melihat apa yang saya maksud (gambar 7).

Gambar 6

Gambar 7
Langkah 4: Membuka Dokumen
Namun, dalam banyak situasi, lebih tepat untuk memungkinkan pengguna membuka dokumen di aplikasi lain tanpa terlebih dahulu menampilkan pratinjau dokumen. Untuk memungkinkan hal ini dalam contoh aplikasi kami, kami perlu menerapkan openDocument:
action. Seperti pada previewDocument:
action, kita mendapatkan URL contoh dokumen PDF dalam bundel aplikasi dan menggunakannya untuk menginisialisasi instance kelas
UIDocumentInteractionController
. Setelah menetapkan delegasi pengontrol interaksi dokumen, kami menyajikan menu dengan memanggil
presentOpenInMenuFromRect:inView:
pada pengontrol interaksi dokumen. CGRect
yang kami lewati sebagai argumen pertama adalah bingkai tombol seperti yang anda lihat di cuplikan kode di bawah ini.
- (IBAction)openDocument:(id)sender { UIButton *button = (UIButton *)sender; NSURL *URL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"pdf"]; if (URL) { // Initialize Document Interaction Controller self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:URL]; // Configure Document Interaction Controller [self.documentInteractionController setDelegate:self]; // Present Open In Menu [self.documentInteractionController presentOpenInMenuFromRect:[button frame] inView:self.view animated:YES]; } }
Untuk menguji openDocument:
action, penting bahwa anda menjalankan contoh aplikasi pada perangkat fisik. Alasannya sederhana. Sistem operasi memeriksa aplikasi mana pada perangkat yang mendukung jenis file (UTI) yang ingin kita buka. Jika tidak dapat menemukan aplikasi apa pun yang mendukung jenis file yang terkait, maka itu tidak akan menampilkan menu Open In dan itulah yang akan terjadi di Simulator iOS.
Untuk menguji fitur ini, pastikan bahwa anda memiliki aplikasi yang diinstal pada perangkat fisik anda yang menerima dokumen PDF, seperti Dropbox atau aplikasi Kindle Amazon.

Gambar 8
Kesimpulan
Seperti yang anda lihat, sangat mudah untuk melihat dan membuka dokumen menggunakan kelas UIDocumentInteractionController
. Saya sarankan anda menjelajahi referensi kelasnya serta protokol UIDocumentInteractionControllerDelegate
. Ada banyak metode delegasi yang mungkin berguna terutama ketika bekerja dengan dokumen yang lebih besar atau alur kerja yang kompleks.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weekly