2016-03-23 13 views
2

Bu araştırıcısına araştırdım ve bu soruna bir çözüm bulamıyorum. Geçerli kodum Reload section without reloading section header dayanmaktadır.UITableView, otomatik ekrandırma ile hücreyi genişletirken atlar.

Kullanıcı hücreye bastığında bir uitableview hücresi oluşturmaya çalışıyorum. Başlangıçta iki satırlık metinle sınırlı olan bir UILabel ile UITableViewCell alt sınıfım var. Kullanıcı UILabel'a bastığında, UILabel'deki numberOfLines özelliğini 0 olarak ayarladım, böylece gerektiği kadar çok satıra genişler. İşte

tableView benim kodudur: didSelectRowAtIndexPath:

if (((NSNumber *)expandedCells[indexPath.section]).boolValue) 
{ 
    labelExpandingCell.cellLabel.numberOfLines = 10; 
} else 
{ 
    labelExpandingCell.cellLabel.numberOfLines = 3; 
} 
[UIView setAnimationsEnabled:NO]; 
[self.tableView beginUpdates]; 
[self.tableView setNeedsDisplay]; 
[self.tableView endUpdates]; 
[UIView setAnimationsEnabled:YES]; 

Bazen bu, gayet iyi çalışıyor tipik UITableView en contentOffset.y == 0. Genellikle tableview geriye 100 piksel atlar zaman ya da ben öyle yürüttüğünüzde bu kod İşte bu kod çalıştırılmadan önce ve sonra bir örnek günlüğü. 57:

2016-03-25 14

08,549 TableViewTest [485: 129926] İçerikte güncellemeden önce offset: 153,500000 2016/03/25 14: 57: 08,568 TableViewTest [485: 129926] İçerikte güncellemeden sonra offset: 136,500000

O anda görünebilen hücreyi genişletdiğimde otomatik olarak neden tablo görünümümün geriye doğru sıçramasına neden oluyor?

+0

Çalıştığım kodla benzer bir şey alıyorum. Bu başladığında emin değilim. iOS 9 sdk muhtemelen? Hücre yüksekliğini elle ayarlamak için geri dönmek istemiyorum! –

cevap

3

Bu sorunu, tableview delegesindeki tahminiHeightForRowAtIndexPath yöntemini uygulayarak düzelttim. Bu yöntemin uygulanmadan önceki bölümlerin yüksekliğini masaüstümde düzgün bir şekilde tahmin edemediğim için tablo görünümünde sorun olduğuna inanıyorum. evet, senin UILabel kısıtlamaları doğru hücreye uygulanmasını sağlamak onay Eğer

+0

Evet, sabitleme yüksekliği ekleyerek ve tahmini yüksekliği kaldırarak çözdüm .. :) –

0

Eğer UITableView

tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = DEFAULT_ROW_HEIGHT

kurdunuz. Yukarıdaki iki özelliği ayarlarsanız, "estimHeightForRowAtIndexPath" yöntemini uygulamaktan kaçınabilirsiniz.

+0

benim için işe yaramıyor! – Archerlly