UITableViewCell无法正确呈现

时间:2019-04-23 17:15:22

标签: c# uitableview xamarin.ios

我们创建了一个TableViewController,以便用户可以启用/禁用不同的通知类型。初始加载后,一切正常,直到用户滚动到底部然后返回顶部,并且前1-2个表格视图单元格未正确显示。

示例: https://imgur.com/7n2VpTo

通常删除并重新创建视图控制器和xib / cs文件可解决此问题,但想知道是否有人知道其原因。

控制器代码:

        public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
        {
             return 305;
        }

        public override nint NumberOfSections(UITableView tableView)
        {
            return 1;
        }

        public override nint RowsInSection(UITableView tableView, nint section)
        {
            return _numRows;
        }

        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.DequeueReusableCell(Setting.Key) as Setting;
            if (cell == null)
            {
                var values = _settings.Where(s => s.Index == indexPath.Row).FirstOrDefault();

                cell = new Setting(values);

                var views = NSBundle.MainBundle.LoadNib(Setting.Key, cell, null);

                cell = Runtime.GetNSObject(views.ValueAt(0)) as Setting;

            }

            cell.SelectionStyle = UITableViewCellSelectionStyle.None;
            cell?.PopulateData(_settings.Where(s => s.Index == indexPath.Row).FirstOrDefault(), this);

            return cell;
        }


        public override void ViewWillLayoutSubviews()
        {
            base.ViewWillLayoutSubviews();
        }

单元格代码:

public partial class Setting : UITableViewCell
    
{
    public static readonly NSString Key = new NSString("Setting");

    public static readonly UINib Nib;
        
    public SettingModel Values { get; set; }
        

    static Setting()
        
    { 
             
        Nib = UINib.FromName("Setting", NSBundle.MainBundle);
        
    } 
  
      

    protected Setting(IntPtr handle) : base(handle) { }

        

    public Setting() : base() {

 }

        

    public override void LayoutSubviews()
        
    { 
            
        base.LayoutSubviews();
        
    }

        

    public void PopulateData(SettingModel values) 
        
    {
            
        //logic...
        

    }

}

1 个答案:

答案 0 :(得分:0)

升级到Visual Studio for Mac 8.6.5解决了该问题。