【问题标题】:Nativescript IOS 13 ui-listview component not renderedNativescript IOS 13 ui-listview 组件未呈现
【发布时间】:2023-04-02 14:22:01
【问题描述】:

大家好,我在 IOS13 上的 listview 组件有问题 我尝试更新到最新版本,但不起作用

我通过直接在 node_modules 中修补 listview.ios.js 来修复它 喜欢这里评论的建议:

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;
};

但这会使我的应用程序崩溃,我无法在未定义上调用方法:/

【问题讨论】:

  • 您确定您的package.json 参考"nativescript-ui-listview": "^7.1.0", 或更高版本吗?
  • 是的,它不会渲染项目行,而且我的 tns-ios 是在 4.0.1 和 tns cli 是在 5.4.2
  • 您的tns-core-modules 是什么版本?还有你的包锁文件中nativescript-ui-core的版本是什么?
  • 如果我直接编辑 listview.ios.js ,它与版本无关,但我如何将这些方法添加到原型中?
  • 这与版本有关,因为我猜那些特定的代码行在 7.x 中已修复。如果您使用较高版本的 UI 包运行较低版本的 tns 运行时/核心模块,则可能存在兼容性问题。但是,如果你可以修补它,你可以,但你应该知道如何和在哪里。我不确定您在哪里找到上述代码,但包中没有 ListViewCell 的引用。 Here 是一个代码 sn-p 似乎适用于您的情况,使用旧版本的列表视图。

标签: nativescript angular2-nativescript nativescript-telerik-ui nativescript-plugin


【解决方案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;
    };
}

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2019-06-16
    • 2021-05-18
    相关资源
    最近更新 更多