Nativescript IOS 13 компонент ui-listview не отображается

Привет, ребята, у меня проблема с компонентом listview на IOS13. Я пробовал обновиться до последней версии, но это не сработало.

Я исправил это, исправив listview.ios.js непосредственно в node_modules Как предлагается из комментария здесь:

https://github.com/NativeScript/nativescript-ui-feedback/issues/1160#issuecomment-542039004

И это работает нормально, но есть ли что-нибудь, чтобы исправить это по-другому?

Например:

Я попытался создать новый файл app-platform.ios.js

и прикрепление недостающих методов к списку напрямую, например:

const listview = require('nativescript-ui-listview');

listview.ListViewCell.prototype.systemLayoutSizeFittingSizeWithHorizontalFittingPriorityVerticalFittingPriority = function (targetSize, horizontalFittingPriority, verticalFittingPriority) {
    if (this.view && this.view.itemView && this.view.itemView.parent) {
        var owner = this.view.itemView.parent;
        owner._preparingCell = true;
        var dimensions = owner.layoutCell(this, undefined);
        owner._preparingCell = false;
        return CGSizeMake(view_1.layout.toDeviceIndependentPixels(dimensions.measuredWidth), view_1.layout.toDeviceIndependentPixels(dimensions.measuredHeight));
    }
    return targetSize;
};

Но это разрушает мое приложение, я не могу вызвать метод на undefined: /


comment
Вы уверены, что ваша package.json ссылка "nativescript-ui-listview": "^7.1.0", или выше?   -  person Tim    schedule 16.12.2019
comment
да, и он не будет отображать строки элементов, но также мой tns-ios находится на 4.0.1, а tns cli - на 5.4.2   -  person Loki    schedule 16.12.2019
comment
Какая у тебя версия tns-core-modules? Также какая версия nativescript-ui-core в файле блокировки вашего пакета?   -  person Manoj    schedule 16.12.2019
comment
Дело не в версии, если я напрямую редактирую listview.ios.js, он работает, но как мне добавить эти методы в прототип?   -  person Loki    schedule 16.12.2019
comment
Речь идет о версии, потому что, я думаю, эти конкретные строки кода были исправлены в 7.x. Могут возникнуть проблемы с совместимостью, если вы используете более низкую версию модулей времени выполнения / ядра tns с более высокой версией пакетов пользовательского интерфейса. Но если у вас все в порядке с исправлением, вы можете, но вы должны знать, как и где. Я не уверен, где вы нашли приведенный выше код, но в пакете нет ссылки на ListViewCell. Вот фрагмент кода, который, похоже, работает для в вашем случае с более старой версией списка.   -  person Manoj    schedule 17.12.2019


Ответы (1)


Если кому-то это все еще нужно, удалось решить это в вашем списке путей main.js с этим.

const application = require('application');


if (application.ios) {
    const view_1 = require("tns-core-modules/ui/core/view");
    const listView = require('nativescript-ui-listview');

    listView.ExtendedListViewCell.prototype.systemLayoutSizeFittingSizeWithHorizontalFittingPriorityVerticalFittingPriority = function (targetSize, horizontalFittingPriority, verticalFittingPriority) {
        if (this.view && this.view.itemView && this.view.itemView.parent) {
            var owner = this.view.itemView.parent;
            owner._preparingCell = true;
            var dimensions = owner.layoutCell(this, undefined);
            owner._preparingCell = false;
            return CGSizeMake(
                view_1.layout.toDeviceIndependentPixels(dimensions.measuredWidth),
                view_1.layout.toDeviceIndependentPixels(dimensions.measuredHeight)
            );
        }
        return targetSize;
    };
}
person Loki    schedule 23.12.2019