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;
}
Bunu zaten denedim, aynı problemi veriyor. Daha fazla bilgi için –
https://developer.xamarin.com/guides/ios/user_interface/tables/autosizing-row-height/. Denediğin şeyi başarmanın yolu bu olmalı. – Pilatus
Bu işe yaradı! Teşekkürler. –