düzenlerken kendi kendine boyutlandırma UITableViewCell'i nasıl oluşturabilirim Kendi kendine boyutlandırmaUITableView Cell
'u oluşturmaya çalışıyorum. Googled sonra, bu öğretici bulundu: oldukça iyi https://pontifex.azurewebsites.net/self-sizing-uitableviewcell-with-uitextview-in-ios-8/.Xamarin ios
swift içinde, tableView
? BeginUpdates
, özel hücrenin boyutunu güncelleyebilir. Ama xamarin ios'da çalışmıyor gibi görünüyor.
Birisi bana yardım edebilir mi? Çok teşekkürler!
using System;
using Foundation;
using UIKit;
using CoreGraphics;
namespace Ma
{
public partial class DataInput : UITableViewCell
{
public string title { get; set;}
public static readonly UINib Nib = UINib.FromName ("DataInput", NSBundle.MainBundle);
public static readonly NSString Key = new NSString ("DataInput");
public string value { get; set;}
public DataInput (IntPtr handle) : base (handle)
{
}
public static DataInput Create()
{
return (DataInput)Nib.Instantiate (null, null) [0];
}
public void Populate()
{
this.Title.Text = this.title;
if (!string.IsNullOrEmpty(value)) {
this.Input.Text = this.value;
}
}
public string GetInputValue()
{
return this.Input.Text;
}
public UITableView GetTableView()
{
UITableView table = null;
UIView view = this.Superview;
if (view != null) {
table = (UITableView)view.Superview;
}
return table;
}
public override void AwakeFromNib()
{
base.AwakeFromNib();
this.Input.ScrollEnabled = false;
this.Input.Delegate = new DataInputDelegate();
}
public override void SetSelected (bool selected, bool animated)
{
base.SetSelected (selected, animated);
if (selected) {
this.Input.BecomeFirstResponder();
} else {
this.Input.ResignFirstResponder();
}
}
}
public partial class DataInputDelegate : UITextViewDelegate
{
public override void Changed (UITextView textView)
{
var size = textView.Bounds.Size;
var newSize = textView.SizeThatFits (new CGSize (size.Width, size.Height));
if (size.Height != newSize.Height) {
UITextView.AnimationsEnabled = false;
UITableViewCell input = (UITableViewCell)textView.Superview.Superview;
UITableView tableView = (UITableView)input.Superview.Superview;
// This is the place of updating custom cell size, but It's not working now.
tableView.BeginUpdates();
tableView.EndUpdates();
UITextView.AnimationsEnabled = true;
var thisIndexPath = tableView.IndexPathForCell (input);
tableView.ScrollToRow (thisIndexPath, UITableViewScrollPosition.Bottom, false);
}
}
}
}
BTW, autolayout kullanarak ve
TableView.EstimatedRowHeight = 50;
TableView.RowHeight = UITableView.AutomaticDimension;
set Ve ben de kurulumu aşağıdaki yapmış ediyorum.
public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
if (indexPath.Row == 0) {
return 80.0f;
}
return UITableView.AutomaticDimension;
}
Birisi bana rehberlik edebilirse çok teşekkürler!