【问题标题】:Deleting a view from a ScrollView从 ScrollView 中删除视图
【发布时间】:2012-01-14 20:51:04
【问题描述】:

开发 Titanium Mobile。

单击删除按钮时,我需要从滚动视图中删除视图。当我的按钮被点击时,我有一个自定义事件触发,scrollView 会监听该事件。我的问题是,如何引用需要删除的视图?这些视图是动态添加到 scrollView 中的,并且没有关于视图的唯一信息。我尝试在触发自定义事件时传递视图本身,但这不起作用。如何告诉 scrollView 要删除哪个视图?

【问题讨论】:

  • 可以在创建过程中指定唯一标识符,以后可以使用
  • 喜欢 ID: myUniqueID ?我想过这个,但我需要想出一种方法来创建一个 uniqueID。我想我可以使用一个随机数。 scrollView 实际上可以包含重复项,因此视图本身没有什么是唯一的。另外,我如何找到该视图?我是否循环遍历所有的 scrollView 子项,检查那里的 ID?
  • 如果您有多个且只有一个按钮,您要删除哪个视图?
  • scrollView 中有几个视图。每个视图都有自己的删除按钮,该按钮位于该视图中。单击时,我想从滚动视图中删除该视图,并删除我存储为全局变量的对象。

标签: javascript scrollview titanium-mobile


【解决方案1】:

当您在视图中有一个删除按钮时 - 这是小菜一碟 :) 只需获取其父级并删除它 - scrollView.remove(e.source.parent);

我在这里创建了一个演示页面:

var scrollView = Titanium.UI.createScrollView({ 
    contentWidth: 'auto', 
    contentHeight: 'auto', 
    top: 0, 
    showVerticalScrollIndicator: true, 
    showHorizontalScrollIndicator: true,
    layout: 'vertical'
}); 

var colors = ['red', 'green', 'blue', 'orange', 'purple', 'yellow'];

for (var i = 0; i < 6; i++) {

    var view = Ti.UI.createView({ 
        backgroundColor: colors[i], 
        borderRadius: 10, 
        width: 300, 
        height: 200, 
        top: 10,
        id: i
    });
    scrollView.add(view); 

    var deleteButton = Ti.UI.createButton({
        borderRadius: 3,
        style: Ti.UI.iPhone.SystemButtonStyle.PLAIN,
        backgroundGradient: {
            type: 'linear', 
            colors: [ '#c7c7c7', '#686868' ], 
            startPoint: { x: 0, y: 0 }, 
            endPoint: { x: 0, y: 30 }, 
            backFillStart: false
        },
        title: 'Delete view ' + i,
        font: { fontSize: 12, fontWeight: 'bold' },
        color: '#fff',
        width: 120,
        height: 30
    });
    view.add(deleteButton);

    deleteButton.addEventListener('click', function(e) {
        Ti.API.info(e.source.id); // use this ID
        scrollView.remove(e.source.parent);
    });

}

Ti.UI.currentWindow.add(scrollView);

【讨论】:

  • 有没有办法在滚动视图中获取视图(e.src.parent)索引?我问的原因是因为我还想删除与此视图关联的对象。此对象全局存储在列表中。我认为视图的索引将与列表中对象的索引相同。
  • 这将很难获得索引,因为它不是 TableView。最简单的方法可能是为视图设置一个 ID(我已经更新了上面的代码),在创建和删除时为您的对象提供相同的 ID - 删除具有请求 ID 的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多