Monotouch - 使用for循环以编程方式在彼此之下创建UILabel

时间:2016-08-02 12:51:23

标签: uitableview xamarin xamarin.ios

我知道解决方案可能相当简单,但我在定位这些视图方面遇到了挑战。

我正在UILabels内动态创建UITableViewCellUILabels的编号在编译时是未知的。

根据我的数据列表的大小,我想创建一个新的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);

        }

    }

1 个答案:

答案 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);

        }

    }