• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 可扩展 TableView 行 - 为什么像树错误?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:07:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

错误 在应用中找不到索引行

我正在处理这个代码

  1. 如果我单击第一个时间 TableView 行,则会显示错误

    但它会显示子行。

    2.如果我单击子行,则会显示此错误:未定义不是对象

    (评估(e.row.sub.length)

    为什么会出现这个错误?

    代码

    var win = Ti.UI.createWindow();
    var container = Ti.UI.createView({ backgroundColor: "white", layout: "vertical" });
    
    var layout = [{
            title: "arent 1",
            isparent: true,
            opened: false,
            sub: [
                { title: "Child 1" },
                { title: "Child 2" }
            ]
        }, {
            title: "arent 2",
            isparent: true,
            opened: false,
            sub: [
                { title: "Child 3" },
                { title: "Child 4" }
            ]
        }];
    
    var tableView = Ti.UI.createTableView({
        style: Titanium.UI.iPhone.TableViewStyle.GROUPED,
        top: 0,
        height: Ti.Platform.displayCaps.platformHeight,
        data: layout
    });
    
    
    tableView.addEventListener("click", function (e) {
        var i;
        //Is this a parent cell?
        console.log(e.row);
        if (e.row.isparent) {
            //Is it opened?
            if (e.row.opened) {
                for (i = e.row.sub.length; i > 0; i = i - 1) {
                    tableView.deleteRow(e.index + i);
                }
                e.row.opened = false;
            } else {
                //Add teh children.
                var currentIndex = e.index;
                for (i = 0; i < e.row.sub.length; i++) {
                    tableView.insertRowAfter(currentIndex, e.row.sub[i]);
                    currentIndex++;
                }
                e.row.opened = true;
            }
        }
    });
    
    container.add(tableView);
    
    win.add(container);
    win.open();
    

    任何帮助将不胜感激



Best Answer-推荐答案


您的代码的问题是,当表索引尚未更新时,您试图在表的末尾插入许多行。它的解决方案是使用相同的索引以相反的顺序添加行。

这是您的事件监听器的修改版本:

tableView.addEventListener("click", function (e) {
    var i, rows;
    //Is this a parent cell?
    if (e.row.isparent) {
        //Is it opened?
        if (e.row.opened) {
            for (i = e.row.sub.length; i > 0; i = i - 1) {
                tableView.deleteRow(e.index + i);
            }
            e.row.opened = false;
        } else {
            //Add teh children.
            rows = e.row.sub.reverse();
            for (i = 0; i < rows.length; i++) {
                tableView.insertRowAfter(e.index, rows[i]);
            }
            e.row.opened = true;
        }
    }
});

关于ios - 可扩展 TableView 行 - 为什么像树错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22375064/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap