gpt4 book ai didi

ios - 表格 View 中单元格的动态高度不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:26:11 24 4
gpt4 key购买 nike

我创建了一个 table view,它有 6 个标签和 2 个按钮。我正在使用自动版式。我正在从服务器获取数据。

ViewController.cs

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[indexPath.Row];

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[indexPath.Row];
tableView.DeselectRow(indexPath, true);
if (RowClicked != null)
RowClicked(caseSearchItem, EventArgs.Empty);
}

public override nint RowsInSection(UITableView tableview, nint section)
{
return caseSearchItems.Count;
}
}

}

TableViewCell.cs

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)[0];
}

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;
}
}

}

我想要的是:

我想让所有单元格高度动态化。但是每一次,第二个单元格都没有进行调整。

我尝试过的:

1.)

ViewDidAppear 中,我设置了以下内容:

public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
caseHistoryTableView.ReloadData();
caseHistoryTableView.RowHeight = UITableView.AutomaticDimension;
caseHistoryTableView.EstimatedRowHeight = 145.0f;
}

2.)

GetCell 方法中,我以这种方式添加单元格:

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
CaseHistoryTableCell cell = tableView.DequeueReusableCell(CaseHistoryTableCell.Key) as CaseHistoryTableCell ?? CaseHistoryTableCell.Create();
var item = caseSearchItems[indexPath.Row];
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;
}

但我的输出仍然低于:


第二个单元格不采用自动高度。

enter image description here

标签 1 约束:(医院标签)

enter image description here

标签 2 containt :(地址标签)

enter image description here

最佳答案

根据您对单行高度的要求添加两个标签的高度,现在为两个约束添加关系从 equalto(=)greaterthanorequalto(>=)

见下图。

enter image description here

现在运行并重新检查,如果现在遇到任何问题请告诉我。

关于ios - 表格 View 中单元格的动态高度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com