菜鸟教程小白 发表于 2022-12-13 03:03:16

ios - Xamarin Monotouch CustomCell 为空白


                                            <p><p>我有以下 CustomCell:</p>

<pre><code>using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Zurfers.Mobile.iOS
{
    public class CustomCell : UITableViewCell
    {
      UILabel headingLabel, subheadingLabel, priceLabel;
      UIImageView imageService;
      UIImageView star, star2, star3, star4, star5;
      public CustomCell (NSString cellId) : base (UITableViewCellStyle.Default, cellId)
      {
            imageService = new UIImageView();
            star   = new UIImageView();
            star2= new UIImageView();
            star3= new UIImageView();
            star4= new UIImageView();
            star5= new UIImageView();
            headingLabel = new UILabel(){
                Font = UIFont.FromName(&#34;Cochin-BoldItalic&#34;, 22f),
                TextColor = UIColor.FromRGB (127, 51, 0),
            };
            subheadingLabel = new UILabel(){
                Font = UIFont.FromName(&#34;Cochin-BoldItalic&#34;, 22f),
                TextColor = UIColor.FromRGB (127, 51, 0),
            };
            priceLabel = new UILabel(){
                Font = UIFont.FromName(&#34;Cochin-BoldItalic&#34;, 22f),
                TextColor = UIColor.FromRGB (127, 51, 0),
            };
      }

      public void UpdateCell (string title, string subtitle, string price, UIImage image)
      {
            imageService.Image = image;
            headingLabel.Text = title;
            subheadingLabel.Text = subtitle;
            priceLabel.Text = price;
      }

      public override void LayoutSubviews ()
      {
            base.LayoutSubviews ();
            imageService.Frame = new RectangleF(63, 5, 33, 33);
            headingLabel.Frame = new RectangleF(5, 4, 63, 25);
            subheadingLabel.Frame = new RectangleF(100, 18, 100, 20);
            priceLabel.Frame = new RectangleF(250, 18, 100, 20);
      }
    }
}
</code></pre>

<p>这是我的 TableSource:</p>

<pre><code>using System;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Zurfers.Mobile.iOS
{
    public class HotelTableSource : UITableViewSource
    {

      string[] tableItems;
      NSString cellIdentifier = new NSString(&#34;TableCell&#34;);

      public HotelTableSource (string[] items)
      {
            tableItems = items;
      }
      public override int RowsInSection (UITableView tableview, int section)
      {
            return tableItems.Length;
      }

      public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
      {
            new UIAlertView(&#34;Row Selected&#34;, tableItems, null, &#34;OK&#34;, null).Show();
            tableView.DeselectRow (indexPath, true); // normal iOS behaviour is to remove the blue highlight
      }

      public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
      {

            CustomCell cell = tableView.DequeueReusableCell(cellIdentifier) as CustomCell;
            if (cell == null)
                cell = new CustomCell(cellIdentifier);
            cell.UpdateCell(tableItems, tableItems, tableItems,
                            UIImage.FromFile (tableItems) );
            return cell;


      }
    }
}
</code></pre>

<p>但是当我运行应用程序时,TableView 是空的。在我创建 TableView 之前,每个 CustomCell 都有一个值。</p>

<p>我做错了什么?</p>

<p>提前感谢您的帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Cell 不仅应该包含控件,还应该放在它上面(或者它的 <code>ContentView</code> 上)。为您添加到自定义单元格的任何控件调用 <code>AddSubview</code>:</p>

<pre class="lang-cs prettyprint-override"><code>ImageService = new UIImageView();
AddSubview(ImageService);
</code></pre>

<hr/>

<p>如果不起作用,请尝试使用 <code>UITableViewCell</code> 的默认控件(<code>TextLabel</code>、<code>DetailTextLabel</code>、<code>ImageView</code>) 来显示一些数据。如果出现数据,则您的自定义 <code>UITableViewCell</code> 中仍有问题(错误的帧,空文本),如果没有,则问题出在 <code>UITableViewSource</code> 中(空数据)。</p ></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Xamarin Monotouch CustomCell 为空白,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17457598/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17457598/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Xamarin Monotouch CustomCell 为空白