ios - 表格 View 中单元格的动态高度不起作用
<p><p>我创建了一个 <code>table view</code>,它有 6 个标签和 2 个按钮。我正在使用自动布局。我正在从服务器获取数据。</p>
<p><strong>ViewController.cs</strong></p>
<pre><code>public partial class CaseHistoryController : UIViewController
{
private List<CaseSearchItem> caseSearchItems;
CaseHistorySourceClass caseSearchSourceclass;
public CaseHistoryController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.Title = "Case History";
View.BackgroundColor = UIColor.Clear.FromHexString("#DDDDDD", 1.0f);
var task = GetCaseHistoryData();
}
private async Task GetCaseHistoryData()
{
caseSearchItems = await CaseHistoryServices.GetListCaseHistory();
caseSearchSourceclass = new CaseHistorySourceClass(caseSearchItems);
CaseHistorySourceClass.RowClicked += (sender, e) =>
{
var webController = Storyboard.InstantiateViewController("UserInfoViewController") as UserInfoViewController;
webController.caseSearchItem = (CaseSearchItem)sender;
NavigationController.PushViewController(webController, true);
};
caseHistoryTableView.Source = caseSearchSourceclass;
caseHistoryTableView.BackgroundColor = UIColor.Clear.FromHexString("#DDDDDD", 1.0f);
caseHistoryTableView.SectionHeaderHeight = 0.0f;
caseHistoryTableView.SectionFooterHeight = 5.0f;
caseHistoryTableView.ContentInset = new UIEdgeInsets(0, 0, 10.0f, 0);
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
caseHistoryTableView.ReloadData();
caseHistoryTableView.RowHeight = UITableView.AutomaticDimension;
caseHistoryTableView.EstimatedRowHeight = 145.0f;
}
public class CaseHistorySourceClass : UITableViewSource
{
private List<CaseSearchItem> caseSearchItems;
public CaseSearchItem caseSearchItem;
public static event EventHandler RowClicked;
public CaseHistorySourceClass(List<CaseSearchItem> caseSearchItems)
{
this.caseSearchItems = caseSearchItems;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
CaseHistoryTableCell cell = tableView.DequeueReusableCell(CaseHistoryTableCell.Key) as CaseHistoryTableCell ?? CaseHistoryTableCell.Create();
var item = caseSearchItems;
cell.BindData(item.Organization, item.Address, item.Doctor, item.UserName);
cell.Layer.MasksToBounds = false;
cell.Layer.CornerRadius = 10.0f;
cell.BackgroundColor = UIColor.White;
return cell;
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
caseSearchItem = caseSearchItems;
tableView.DeselectRow(indexPath, true);
if (RowClicked != null)
RowClicked(caseSearchItem, EventArgs.Empty);
}
public override nint RowsInSection(UITableView tableview, nint section)
{
return caseSearchItems.Count;
}
}
}
</code></pre>
<p><strong>TableViewCell.cs</strong></p>
<pre><code>public partial class CaseHistoryTableCell : UITableViewCell
{
public static readonly NSString Key = new NSString("CaseHistoryTableCell");
public static readonly UINib Nib;
static CaseHistoryTableCell()
{
Nib = UINib.FromName("CaseHistoryTableCell", NSBundle.MainBundle);
}
public CaseHistoryTableCell(IntPtr handle) : base(handle)
{
// Note: this .ctor should not contain any initialization logic.
}
public static CaseHistoryTableCell Create()
{
return (CaseHistoryTableCell)Nib.Instantiate(null, null);
}
public void BindData(string hospitalLabel, string addressLabel, string drLabel, string patientLabel)
{
this.lbl_hospitalName.Text = hospitalLabel;
this.lbl_address.Text = addressLabel;
this.lbl_drName.Text = drLabel;
this.lbl_patientName.Text = patientLabel;
this.lbl_address.TextColor = UIColor.Clear.FromHexString("#000000", 0.54f);
this.lbl_patientName.TextColor = UIColor.Clear.FromHexString("#000000", 0.54f);
this.lbl_hospitalName.TextColor = UIColor.Clear.FromHexString("#000000", 0.87f);
this.lbl_drName.TextColor = UIColor.Clear.FromHexString("#000000", 0.87f);
this.btn_createAppointment.SetTitleColor(UIColor.Clear.FromHexString("#0072BA", 1.0f), UIControlState.Normal);
this.btn_viewDetail.SetTitleColor(UIColor.Clear.FromHexString("#0072BA", 1.0f), UIControlState.Normal);
}
public override CGRect Frame
{
get
{
return base.Frame;
}
set
{
value.Y += 4;
value.Height -= 2 * 4;
base.Frame = value;
}
}
}
</code></pre>
<p><strong>我想要的是:</strong></p>
<p>我想让所有单元格高度动态化。但是每次,第二个单元格都没有进行调整。</p>
<p><strong>我尝试过的:</strong></p>
<p><strong>1.)</strong></p>
<p>在 <code>ViewDidAppear</code> 中,我设置了以下内容:</p>
<pre><code>public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
caseHistoryTableView.ReloadData();
caseHistoryTableView.RowHeight = UITableView.AutomaticDimension;
caseHistoryTableView.EstimatedRowHeight = 145.0f;
}
</code></pre>
<p><strong>2.)</strong></p>
<p>在 <code>GetCell</code> 方法中,我以这种方式添加单元格:</p>
<pre><code>public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
CaseHistoryTableCell cell = tableView.DequeueReusableCell(CaseHistoryTableCell.Key) as CaseHistoryTableCell ?? CaseHistoryTableCell.Create();
var item = caseSearchItems;
cell.BindData(item.Organization, item.Address, item.Doctor, item.UserName);
cell.Layer.MasksToBounds = false;
cell.Layer.CornerRadius = 10.0f;
cell.BackgroundColor = UIColor.White;
cell.SetNeedsLayout();
cell.LayoutIfNeeded();
return cell;
}
</code></pre>
<p>但我仍然得到以下输出:</p>
<hr/>
<p>不采用自动高度的第二个单元格。</p>
<p> <a href="/image/Y8m1W.png" rel="noreferrer noopener nofollow"><img src="/image/Y8m1W.png" alt="enter image description here"/></a> </p>
<p><strong>标签 1 约束:(医院标签)</strong></p>
<p> <a href="/image/86nBc.png" rel="noreferrer noopener nofollow"><img src="/image/86nBc.png" alt="enter image description here"/></a> </p>
<p><strong>标签 2 约束:(地址标签)</strong></p>
<p> <a href="/image/A40Nu.png" rel="noreferrer noopener nofollow"><img src="/image/A40Nu.png" alt="enter image description here"/></a> </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>添加两个标签的高度,根据您对单行高度的要求,现在添加两个约束的关系,从 <code>equalto(=)</code> 到 <code>greaterthanorequalto(>=)</code></p>
<p>见下图。</p>
<p> <a href="/image/tPtHe.png" rel="noreferrer noopener nofollow"><img src="/image/tPtHe.png" alt="enter image description here"/></a> </p>
<p>现在运行并重新检查,如果现在遇到任何问题,请告诉我。</p></p>
<p style="font-size: 20px;">关于ios - 表格 View 中单元格的动态高度不起作用,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/41294976/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/41294976/
</a>
</p>
页:
[1]