Apakah mungkin untuk mengaktifkan halaman secara program UIPageViewController
?
ios
ios5
uikit
uipageviewcontroller
RAGOpoR
sumber
sumber
Jawaban:
Ya itu mungkin dengan metode:
Itu adalah metode yang sama yang digunakan untuk mengatur pengontrol tampilan pertama pada halaman. Serupa, Anda dapat menggunakannya untuk pergi ke halaman lain.
Bertanya-tanya mengapa
viewControllers
array, dan bukan pengontrol tampilan tunggal?Itu karena pengontrol tampilan halaman dapat memiliki "tulang belakang" (seperti di iBooks), menampilkan 2 halaman konten sekaligus. Jika Anda menampilkan 1 halaman konten pada suatu waktu, maka kirimkan saja 1 elemen array.
Contoh dalam Swift:
sumber
Karena saya membutuhkan ini juga, saya akan membahas lebih detail tentang bagaimana melakukan ini.
Catatan: Saya berasumsi Anda menggunakan formulir templat standar untuk membuat
UIPageViewController
struktur Anda - yang memilikimodelViewController
dandataViewController
dibuat saat Anda memintanya. Jika Anda tidak mengerti apa yang saya tulis - kembalilah dan buat proyek baru yang menggunakanUIPageViewController
dasar apa adanya. Anda akan mengerti itu.Jadi, perlu membalik ke halaman tertentu melibatkan pengaturan berbagai potongan metode yang tercantum di atas. Untuk latihan ini, saya berasumsi bahwa ini adalah tampilan lanskap dengan dua tampilan ditampilkan. Juga, saya menerapkan ini sebagai IBAction sehingga bisa dilakukan dari tekan tombol atau yang tidak - itu hanya mudah untuk membuatnya panggilan pemilih dan mengirimkan item yang dibutuhkan.
Jadi, untuk contoh ini Anda memerlukan dua pengontrol tampilan yang akan ditampilkan - dan opsional, apakah Anda akan maju dalam buku atau mundur.
Perhatikan bahwa saya hanya memiliki hard-coded ke mana harus pergi ke halaman 4 & 5 dan menggunakan slip ke depan. Dari sini Anda dapat melihat bahwa yang perlu Anda lakukan hanyalah memasukkan variabel yang akan membantu Anda mendapatkan item-item ini ...
sumber
Berikut contoh kode lain untuk tampilan satu halaman. Implementasi untuk viewControllerAtIndex dihilangkan di sini, itu harus mengembalikan controller tampilan yang benar untuk indeks yang diberikan.
Halaman dapat diubah dengan menelepon
sumber
Saya benar-benar bisa melewatkan sesuatu di sini, tetapi solusi ini tampaknya jauh lebih sederhana daripada yang banyak diusulkan.
sumber
Kode ini bekerja dengan baik untuk saya, terima kasih.
Inilah yang saya lakukan dengan itu. Beberapa metode untuk melangkah maju atau mundur dan satu metode untuk langsung ke halaman tertentu. Untuk dokumen 6 halaman dalam tampilan potret. Ini akan berfungsi baik jika Anda menempelkannya ke dalam implementasi RootController dari template pageViewController.
sumber
Swift 4:
Saya harus pergi ke pengontrol berikutnya ketika saya mengetuk berikutnya pada pengontrol tampilan pagecontroller dan juga memperbarui indeks pageControl, jadi ini adalah solusi terbaik dan paling mudah bagi saya :
sumber
Bagaimana dengan menggunakan metode dari dataSource?
Secara analog untuk mundur.
sumber
Dalam Swift :
sumber
Namun menggunakan panggilan metode 'self.pageViewController setViewControllers' ini tidak memanggil 'viewDidDissapear' pada viewController untuk halaman yang telah ditolak, sedangkan membalikkan halaman secara manual akan memanggil viewDidDissapear pada halaman yang ditolak. Saya percaya ini adalah penyebab kecelakaan saya
"Jumlah pengontrol tampilan yang disediakan (0) tidak cocok dengan jumlah yang diperlukan (1) untuk transisi yang diminta"
sumber
Saya juga membutuhkan tombol untuk bernavigasi ke kiri pada PageViewController, yang harus melakukan apa yang Anda harapkan dari gerakan geser.
Karena saya sudah memiliki beberapa aturan di dalam " pageViewController: viewControllerBeforeViewController " untuk berurusan dengan navigasi swipe natural, saya ingin tombol untuk menggunakan kembali semua kode itu, dan tidak bisa menggunakan indeks spesifik untuk menjangkau halaman seperti sebelumnya jawaban itu. Jadi, saya harus mengambil solusi alternatif.
Harap perhatikan bahwa kode berikut ini untuk Pengontrol Tampilan Halaman yang merupakan properti di dalam ViewController kustom saya, dan tulang punggungnya telah disetel ke pertengahan.
Berikut adalah kode yang saya tulis untuk tombol Navigasi Kiri saya:
Anda dapat melakukan sesuatu yang sangat mirip untuk membuat tombol navigasi kanan dari sini.
sumber
Dalam hal jika KONTROL HALAMAN untuk menunjukkan halaman saat ini adalah O&& Anda ingin halaman bernavigasi melalui gulir & juga dengan mengklik tombol kustom di Page ViewController, di bawah ini mungkin bermanfaat.
// Delegasikan disebut viewControllerAfterViewController ketika Pengguna Gulir ke halaman berikutnya
}
}
// Logika tombol Khusus (Sebelumnya & berikutnya)
}
}
sumber
// sekarang panggil metode ini
[self moveToPage];
Semoga berhasil :)
sumber
Untuk satu halaman, saya baru saja mengedit jawaban @Jack Humphries
sumber
Seperti @samwize tunjukkan, cara membuat halaman dengan menggunakan
Inilah cara saya melakukannya: Saya memiliki sumber data dan delegasi saya terpisah. Anda dapat memanggil metode ini dan hanya mengubah tampilan "berikutnya". Sebelumnya Anda harus menerapkan aturan paging. Artinya, Anda harus memeriksa arah dan pengontrol berikutnya. Jika Anda menggunakan metode itu dengan sumber data khusus Anda, array pengontrol yang Anda tampilkan tidak akan berubah (karena Anda akan menggunakan array khusus pada subkelas NSObject).
Menggunakan sumber data Anda sendiri, metode ini hanya menetapkan tampilan baru (dengan arah tertentu). Karena Anda masih akan mengontrol halaman yang akan ditampilkan ketika biasanya digesek.
sumber
Saya mengerjakannya sejak kemarin dan akhirnya saya berhasil. Saya tidak bisa menggunakan template standar sama sekali, karena saya memiliki tiga viewControllers berbeda sebagai tampilan anak:
Saya membutuhkan tombol pemicu hanya di VC yang pertama, jadi saya menambahkan satu properti untuk pageViewController dan model:
Saya menulis ulang metode init model untuk meneruskan storyboard dan pageViewController sebagai parameter, jadi saya bisa mengaturnya ke VC1 saya:
Akhirnya, saya menambahkan IBAction di vc1 saya untuk memicu metode setViewControllers pageViewController: arah: animasi: selesai ::
Catatan Saya tidak perlu menemukan indeks VC, tombol saya akan membawa saya ke VC kedua, tetapi ini tidak sulit untuk mendapatkan semua indeks, dan melacak jejak anak Anda:
Saya harap ini membantu Anda!
sumber
Berikut ini solusi menggunakan metode UIPageViewControllerDataSource :
Kode melacak pengontrol tampilan yang ditampilkan saat ini di UIPageViewController .
Pertama-tama inisialisasi currentViewController ke set pengontrol tampilan awal untuk UIPageViewController .
Kemudian melacak currentViewController di UIPageViewControllerDelegate metode: pageViewController: willTransitionToViewControllers: dan pageViewController: didFinishAnimating: previousViewControllers: transitionCompleted: .
Akhirnya, dalam metode pilihan Anda (dalam contoh di bawah itu - (IBAction) onNext: (id) sender ), Anda dapat pemrograman beralih ke controller berikutnya atau sebelumnya menggunakan UIPageViewControllerDataSouce metode pageViewController: viewControllerBeforeViewController: , pageViewController: viewControllerAfterViewController: untuk mendapatkan pengontrol tampilan berikutnya atau sebelumnya dan navigasikan ke sana dengan memanggil [self.pageViewController setViewControllers: @ [vc] arah: UIPageViewControllerNavigationDirectionAktif animasi ke depan: YA selesai: nil];
sumber
Karena ViewControllers tertanam dalam PageViewController, yang harus Anda lakukan adalah:
Contoh di Xamarin, tetapi secara fungsional mirip dengan Swift dll. Kode berikut akan berada di delegasi Klik Tombol di salah satu ViewControllers yang ditampilkan sebagai halaman:
sumber