UITableView горизонтальные линии, разделяющие ячейки, не прокручиваются вверх или вниз

StackOverflow https://stackoverflow.com/questions/1919166

  •  20-09-2019
  •  | 
  •  

Вопрос

Я написал некоторый код MonoTouch для отображения UITableView без перьев, и при первоначальном отображении представление выглядит нормально, заполненным данными ячейки.Однако, когда я нажимаю прокрутку вниз, чтобы просмотреть больше данных, я получаю двойную сетку, состоящую из статических горизонтальных линий разделения ячеек, которые не перемещаются при прокрутке, плюс другой набор горизонтальных линий разделения ячеек, которые расположены на правильном расстоянии и которые перемещаются при прокрутке вниз. действие.

После прокрутки назад до верхней части табличного представления статическая и динамическая горизонтали идеально синхронизируются, и экран выглядит нормально.Дальнейшая прокрутка воссоздает проблему.

Я использую объекты UITableViewCell по умолчанию для заполнения строк таблицы.

Вероятно, мне не удалось настроить что-то, что обычно делал бы Interface Builder.Есть какие-нибудь идеи?Надеюсь, ребята из Objective-C смогут интерпретировать .Сетевой код.

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    _tableView = new UITableView()
    {
        Source = new TableSource(),
        AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth,
        BackgroundColor = UIColor.White
    };
    _tableView.SizeToFit();
    _tableView.Frame = new RectangleF ( 0, 0, this.View.Frame.Width, this.View.Frame.Height );
    this.View.AddSubview( _tableView );

Обновление 1:Я был обеспокоен тем, что дополнительный набор горизонтальных линий разделения ячеек просачивался из предыдущего вида, отображаемого в стеке навигационного контроллера.Поэтому я переупорядочил приложение, чтобы проблемная таблица отображалась в первом представлении при запуске приложения, но проблема осталась.

Обновление 2:Добавленный

tableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;

Это позволяет избежать двойного набора горизонтальных линий, но я по-прежнему остаюсь со статическими горизонталями, которые пересекаются через середину ячеек при прокрутке табличного представления.

Обновление 3:Есть смутная теория, что это как-то связано с несоответствием конфигурации высоты ячейки или проблемой заливки фона, и поэтому горизонтальные линии могут представлять неокрашенные пиксели в табличном представлении.Я не уверен, как проверить эту теорию?

Это было полезно?

Решение

Решение найдено.Приведенный выше пример кода был заимствован из примера приложения MonoTouch третьей стороны, размещенного на blogshere.Этот код, похоже, создает два полностью перекрывающихся UITableViews, и статические линии сетки, вероятно, были взяты из пустого и более глубокого UITableView в z-порядке, который не реагировал ни на какие жесты прокрутки касанием.

Нет необходимости вручную создавать экземпляр объекта UITableView, как показано выше, потому что класс UITableViewController делает это за нас, поэтому вызов addSubview() излишен.

Вот код, который работает у меня:

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    this.TableView.Source = new TableSource();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top