2011-09-18 15 views
7

Tablo görünümünde sorun yaşıyorum. Üstünde sunulan bir modal görüntü denetleyicisini işten çıkarırken, her zaman en üste doğru kaydırır. KVO kullanarak contentOffset değişikliklerini gözlemlemeyi denedim, ancak görünümümü dağıtan biri bunun arkasına gider. kullanıcı kalıcı bir iletişim kutusunda görevini bitirir UITableViewController itibaren dismissModalViewControllerAnimated content sıfırlama

, self.tableView.contentOffset dediğim şöyledir: viewWillAppear:(BOOL)animated çağrıldığında

[self dismissModalViewControllerAnimated:YES] 

Akabinde, self.tableView.contentOffset zaten 0,0 olarak ayarlanır.

Bunun olması gerekiyor mu? Makale görünümünü sunmadan önce kaydırma konumunu hatırlayarak ve mod görünümünü reddettikten sonra viewWillAppear uygulamasına geri yükleyerek bu sorunu giderebiliyorum. Ama yanlış görünüyor. Bir şey mi eksik?

Dismiss modal view changes underlying UIScrollView'da açıklanan benzer sorunu buldum.

+1

, "viewDidLoad:", model görünümünü reddettikten sonra çağrılıp çağrılmadığını kontrol edebilir misiniz? (Bunun, bellek uyarısı sırasında gerçekleşebileceğini fark ettim, görünüm itildiyse bile bazı bileşenler kaldırılır). –

+0

babbidi iyi bir noktaya sahip, bir bellek uyarısı durumunda, modal görünümü üstte iken görünüm boşaltılamaz olabilir. Tablo görünümünüzü viewDidLoad yönteminizde başlatırsanız ve kalıcı görünüm sırasında bir bellek uyarısı varsa, modal görünümü kapattığınızda tablo görünümü yeniden başlatılıyor olabilir. NSLog'leri viewDidUnload ve viewDidLoad'a yerleştirin. – MattyG

+0

Zaten 'viewDidUnload' izliyordum - ve hayır, görünüm boşaltılmıyor. – Palimondo

cevap

5

Bu, UITableViewController'ın varsayılan davranışı gibi görünüyor. Ben çok basit bir uygulamada test ettim ve aynen söylediğin gibi çalıştı. Beğenmediyseniz, bunun yerine UIViewController kullanın.

+0

Şüphemimi onayladığınız için teşekkür ederiz. Kendime soru sormaya başlıyorum ;-) – Palimondo

+0

@Split UIViewController'ım var ama yine de bu sorun, posta için – iOSdev

5

Tablo görünümünde orijinal kaydırma konumunu koruyabilmem için, bu soruna geçici bir çözüm arıyorum. UITableViewController benim alt sınıfında ben ekledik:

@property (assign) CGPoint lastScrollPosition; 

Sonra uygulanmasında, şu geçersiz kıldık:

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.contentOffset = self.lastScrollPosition; 
} 

- (void)dismissModalViewControllerAnimated:(BOOL)animated 
{ 
    self.lastScrollPosition = self.tableView.contentOffset; 
    [super dismissModalViewControllerAnimated:animated]; 
} 

Eğer tablo başlangıçta sıfır olmayan pozisyona kaydırılan görünür istiyorsanız, olarak Ben yaptım, viewDidLoadlastScrollPosition başlatmayı unutmayın.

+0

Teşekkür Palimondo yeniden üretilebilir. Benim için tam bir problemi çözdün! –