2016-04-08 18 views
0

kaydırılırken kesilir. UITableView'da görüntülemem gereken bir dizelerim var. Farklı layouts olmalı, bu yüzden 4 farklı TableViewCells yaptım. GetCell'da, öğenin ne tür olduğunu (örneğin liste listesi "h_Head") kontrol edip ilgili hücreyi döndürüyorum. Bazı girişler uzundur ve iki satır alır. Sorun, kısıldıklarıdır. Başlangıçta yüklendiğinde, her şey yolunda. Çok satırlı dizeleri geçtiğimde ve geriye kaydırdığımda, kesiliyorlar.Özel TableViewCell yüksekliği,

public override UITableViewCell GetCell (UITableView tableView, Foundation.NSIndexPath indexPath) { 
    BaseChecklistTableViewCell cell; 

    var item = dict [indexPath.Row]; 
    string[] data = item.Split ('_'); 
    var type = data [0]; 
    var content = data [1]; 

    cell = tableView.DequeueReusableCell (new NSString ("NormalTableViewCell")) as BaseChecklistTableViewCell; 

    //indented cell 
    if (type.Equals ("i") && (cell == null || !cell.Key.Equals ("IndentTableViewCell"))) { 
     cell = IndentTableViewCell.Create(); 
    //normal cell 
    } else if (type.Equals ("n") && (cell == null || !cell.Key.Equals ("NormalTableViewCell"))) { 
     cell = NormalTableViewCell.Create(); 
    //header cell 
    } else if (type.Equals ("h") && (cell == null || !cell.Key.Equals ("HeadTableViewCell"))) { 
     cell = HeadTableViewCell.Create(); 
    //title cell 
    } else if (cell == null || !cell.Key.Equals ("TitleTableViewCell")) { 
     cell = TitleTableViewCell.Create(); 
    } 

    cell.setData (content); 

    return cell; 
} 

public override nfloat GetHeightForRow (UITableView tableView, NSIndexPath indexPath) { 
    string item = dict [indexPath.Row];   
    SizeF size = new SizeF ((float)tableView.Bounds.Width - 40, float.MaxValue); 
    nfloat height = UIStringDrawing.StringSize (item, UIFont.FromName("DINPro-Regular", 15), size, UILineBreakMode.WordWrap).Height + 20; 
    return height; 
} 

cevap

1

Sizin UITableView 44px standart yüksekliğe sahip olan ve geri kaydırma zaman gösteriyor budur: Initial loadAfter scrolling past it and back up

İşte benim kod.

Sen ayarlamayı deneyebilirsiniz: eserlere Bunun

TableView.RowHeight = UITableView.AutomaticDimension; 

koşullardır sen kısıtlamaları kullandığınızdan emin olun. Bu, TableCell genel'inizin yüksekliğini yapmalıdır. Her zaman yükseklik özelliğini ayarlamak zorunda kalmadan.

+0

Bunu zaten denedim, aynı problemi veriyor. Daha fazla bilgi için –

+1

https://developer.xamarin.com/guides/ios/user_interface/tables/autosizing-row-height/. Denediğin şeyi başarmanın yolu bu olmalı. – Pilatus

+0

Bu işe yaradı! Teşekkürler. –