Contoh Pengontrol Tampilan Penampung [ditutup]

94

Adakah yang bisa menunjukkan kepada saya contoh bagus dalam membuat Pengontrol Tampilan Kustom sebagai Pengontrol Tampilan Penampung? Satu-satunya dokumentasi yang dapat saya temukan adalah beberapa paragraf di Referensi Kelas UIViewController . Saya merasa saya membutuhkan lebih banyak informasi daripada itu dan contoh penerapannya akan menyenangkan. Google tidak menemukan apa pun.

Saya secara khusus tertarik dengan metode ini:

transitionFromViewController:toViewController:duration:options:animations:completion:
Tidak ada gangguan
sumber
Apakah Anda menemukan sumber lain untuk ini selain yang disebutkan hypercrypt?
John Estropia
1
Belum. Saya akan melakukan penggalian lagi hari ini jika saya punya waktu. Tampaknya aneh bahwa hanya ada sedikit informasi tentangnya mengingat betapa pentingnya dan berguna itu. Saya ingin tahu apakah itu buggy dan akan didokumentasikan dengan lebih baik saat diperbaiki.
gangguan
3
Ini sangat membingungkan saya. Misalnya, tampilan hanya dapat memiliki satu pengontrol sematan. Bagaimana jika Anda ingin mengalihkan pengontrol pada tampilan penampung itu?
pengguna4951
@JanakNirmal Banyak berterima kasih.
gangguan
dapatkah saya menyembunyikan tampilan kontainer
Maulik shah

Jawaban:

51

Hal terbaik yang saya temukan sejauh ini adalah WWDC 2011 Session Video Session 102 - Menerapkan UIViewController Containment .

hypercrypt
sumber
1
Dito. Ini bukan contoh kode demo favorit saya, tetapi itu benar-benar mengimplementasikan wadah VC serta manajemen memori - sangat penting bagi pengontrol tampilan anak Anda untuk dibebaskan ketika mereka tidak lagi terlihat.
memmons
1
Sayangnya, demo tentang cara menggunakan ContainerViewController tidak berfungsi karena dia tidak memiliki penyetelan email di iPad-nya :-(
Ken M. Haggerty
Apakah sesi tersebut memiliki contoh kode?
pengguna4951
apakah Anda memiliki kode sampel sekarang, saya memerlukannya karena saya telah mencoba banyak tetapi belum ada zat terlarut.
iPhone Secara terprogram
37

Selain Sesi Video Sesi WWDC 102 - Menerapkan UIViewController Containment yang hypercrypt sudah disebutkan, sesi Apple WWDC 2012 tentang "Evolusi Pengontrol Tampilan di iOS" juga mencakup topik ini dan kode contoh adalah bagian dari paket kode contoh:

https://developer.apple.com/devcenter/download.action?path=/wwdc_2012/wwdc_2012_sample_code/wwdc_2012_session_code.dmg

Ada juga contohnya di sini: https://github.com/toolmanGitHub/stackedViewControllers

JosephH
sumber
2
+1 menyebutkan di mana mendapatkan paket kode terkutuk itu. Aku sudah memeriksanya.
pengguna4951
6
+1 lagi, mengapa o mengapa Apple tidak dapat menempatkan kode sesi WWDC di halaman anggota mereka?
axello
+1, Maukah Anda berbagi, bagaimana cara mendapatkan jalur kode sumber ini?
Janak Nirmal
1
@JanakNirmal, kode sumber manakah yang sulit Anda dapatkan? Untuk mendapatkan kode WWDC cukup ikuti tautan dmg dan masuk dengan id pengembang apel Anda.
JosephH
17
- (void)viewDidLoad{
    [super viewDidLoad];

    // I put self in a Navigation VC so we can use its right navigationbar 
    // item for triggering the transition
    self.navigationItem.rightBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                    target:self 
                                                    action:@selector(button:)] 
                                                                  autorelease];

    // create test1 and test2 instance (subclass UIViewController and 
    // also need to define their own nibs)
    vc1 = [[test1 alloc]initWithNibName:@"test1" bundle:nil];
    vc2 = [[test2 alloc]initWithNibName:@"test2" bundle:nil];

    //add to the container vc which is self    
    [self addChildViewController:vc1];
    [self addChildViewController:vc2];

    //the entry view (will be removed from it superview later by the api)
    [self.view addSubview:vc1.view];
}

IBAction ini memicu transisi antara dua VC:

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}
sonnywang
sumber
1
Ini adalah contoh yang bagus. Tetapi manajemen memori dalam kasus ini dapat ditingkatkan: stackoverflow.com/a/8453677/849616 untuk solusi yang lebih sesuai.
Hidup
1
Bukan berarti Anda salah. Tapi [self addChildViewController: vc1]; tidak masuk akal. VC Penampung mungkin memiliki BEBERAPA Pengontrol Tampilan Penampung.
pengguna4951
@Vive Saya telah mencapai titik dalam proyek saya di mana saya khawatir tentang manajemen memori. Bisakah Anda memberi tahu saya, terutama tautan yang Anda posting, yang lebih baik dalam hal manajemen memori? Saya sangat baru dan kesulitan melihat perbedaannya
jacobronniegeorge
10

Bisakah ini:

http://subjective-objective-c.blogspot.com/2011/08/writing-high-quality-view-controller.html

Cukup untuk kebutuhan Anda?

Rui Peres
sumber
4
Sebenarnya saya sudah menemukannya, tapi sayangnya ini tertulis tentang Ios4, tapi 5 telah membuat perubahan yang signifikan. Apple sekarang secara eksplisit mendukung pembuatan View Controller Containers, meskipun mereka tampaknya tidak ingin membantu kami mengetahui cara menggunakannya. Terimakasih Meskipun.
gangguan
Bisakah Anda tunjukkan di mana mereka mengatakan itu. Tidak meragukan Anda, hanya penasaran, karena saya telah bergumul dengan itu juga.
Rui Peres
4
Jangan khawatir. Saya melihat-lihat kode untuk kelas penampungnya dan tidak satupun dari mereka menggunakan salah satu metode berikut: addChildViewController :, removeFromParentViewController, transisiFromViewController: toViewController: durasi: opsi: animasi: penyelesaian :, willMoveToParentViewController: dan didMoveToParentViewController: Yang semuanya disebutkan dalam pembaruan Dokumentasi ios5 untuk UIViewController.
gangguan