UITableViewCell не отображается правильно - PullRequest
0 голосов
/ 23 апреля 2019

Мы создали 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...
        

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...