我知道解决方案可能相当简单,但我在定位这些视图方面遇到了挑战。
我正在UILabels
内动态创建UITableViewCell
。 UILabels
的编号在编译时是未知的。
根据我的数据列表的大小,我想创建一个新的UILabel
,一个在另一个下面,并在相应的UILabel
上填充列表中每个索引的数据。< / p>
因为这些是在UITableViewCell
内创建的,所以我希望它们位于单元格的TextLabel
下方。
目前,我的新UILabels
已全部叠加在TextLabel
之上,我似乎无法正确定位。
public void UpdateCell(List<Records> allRecords,List<string> otherInfo)
{
try{
UILabel label = new UILabel();
myRecords = allRecords;
for(int i = 0; i < myRecords.Count;i++)
{
if(i == 0)
//Position the first one below the cell's TextLabel
{
string time = myRecords[i].ResponseTime;
label.Frame = new CoreGraphics.CGRect(TextLabel.Frame.X + 10,TextLabel.Frame.Y + TextLabel.Frame.Height + 10,ContentView.Frame.Width,19);
label.Font = UIFont.FromName ("HelveticaNeueLTStd-ThCn", 18f);
label.TextColor = UIColor.DarkGray;
label.Text = string.Format("- {0}, {1}",otherInfo[i],time);
ContentView.AddSubview(label);
}else{
string responseTime = myRecords[i].ResponseTime;
//Position subsequent views below the first label
UILabel label1 = new UILabel();
label1.Frame = new CoreGraphics.CGRect(label.Frame.X,label.Frame.Bottom + 5,ContentView.Frame.Width,19);
label1.Font = UIFont.FromName ("HelveticaNeueLTStd-ThCn", 18f);
label1.TextColor = UIColor.DarkGray;
label1.Text = string.Format("- {0}, {1}",otherInfo[i],responseTime);
ContentView.AddSubview(label1);
}
}
}
}catch(Exception ex)
{
Console.WriteLine (ex.Message + ex.StackTrace);
}
}
答案 0 :(得分:0)
基于SO的答案:How to create n number of UIButton programmatically in UITableView Cell?
我能够提出这样的解决方案:
public void UpdateCell(List<Records> allRecords,List<string> otherInfo)
{
try{
UILabel label = new UILabel();
myRecords = allRecords;
for(int i = 0; i < myRecords.Count;i++)
{
string time = myRecords[i].ResponseTime;
label.Frame = new CoreGraphics.CGRect(45,TextLabel.Frame.Height + i *(labelSize + spacing),ContentView.Frame.Width,19);
label.Font = UIFont.FromName ("HelveticaNeueLTStd-ThCn", 18f);
label.TextColor = UIColor.DarkGray;
label.Text = string.Format("- {0}, {1}",otherInfo[i],time);
ContentView.AddSubview(label);
}
}
}catch(Exception ex)
{
Console.WriteLine (ex.Message + ex.StackTrace);
}
}