UITableView горизонтальные линии разделения ячеек не прокручиваются вверх или вниз - PullRequest
2 голосов
/ 17 декабря 2009

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

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

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

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

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. Имеет смутную теорию, это связано с несоответствием конфигурации высоты ячейки или проблемой с заливкой фона, поэтому горизонтальные линии могут представлять неокрашенные пиксели в табличном представлении. Я не уверен, как проверить эту теорию?

1 Ответ

3 голосов
/ 22 декабря 2009

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

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

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

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    this.TableView.Source = new TableSource();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...