【问题标题】:Titanium iPhone: making a dialog similar to this standard iPhone ui?Titanium iPhone:制作类似于此标准 iPhone ui 的对话框?
【发布时间】:2011-03-31 01:44:40
【问题描述】:

我正在尝试实现一个对话框,供用户选择多个可切换选项中的几个。 iPhone 有一个很好的模型,在 Settings/General/Keyboards 中:

但是,我无法准确地重新创建它:此任务是显示两个表格部分(表格?),但只有 一个 是可编辑的。 (带有键盘列表的那个。)

Titanium API 只允许编辑表格,而不是部分。而且我不知道如何布置两个 tables 以一起滚动。 (我尝试将它们都放在 ScrollView 等中)

任何人都可以做这样的事情吗?

编辑:这是我的解决方法,我认为这是次优的。 :-( 我在底部使用了一个工具栏,而不是带有控制元素的第二个表格部分:

【问题讨论】:

    标签: iphone mobile dialog titanium appcelerator


    【解决方案1】:

    您可以通过在行上设置可编辑属性来控制任何行是否可编辑(如果未设置,则默认为表的值)。

    【讨论】:

    • 啊哈哈,太好了 - 我会试试看。
    • 非常好 - 我看到这行得通,并且行默认为可编辑 == true。
    【解决方案2】:

    你不需要两张桌子;一个表视图,设置为分组,具有单独的部分就足够了。这样滚动就可以完美地工作,并且可以在整个表格中进行编辑。我不确定为什么编辑只适用于您的一个部分,但我已经整理了一个示例,该示例显示了跨多个表格部分的编辑工作。要运行它,请创建一个项目并将 app.js 的内容替换为以下内容:

    // Windows
    var root = Ti.UI.createWindow();
    
    var window = Ti.UI.createWindow({
        title: 'Keyboards',
        showNavBar: true
    });
    
    // Create table
    var table = Ti.UI.createTableView({
        editable: true,
        style: Ti.UI.iPhone.TableViewStyle.GROUPED
    });
    
    // Create section 1 - this section is editable
    var section1 = Ti.UI.createTableViewSection();
    
    var row1 = Ti.UI.createTableViewRow({title:"English (UK)"});
    var row2 = Ti.UI.createTableViewRow({title:"Chinese - Simplified"});
    
    section1.add(row1);
    section1.add(row2);
    
    // Create section 2 - this section is not editable
    var section2 = Ti.UI.createTableViewSection();
    
    var row3 = Ti.UI.createTableViewRow({title:"French", editable: false});
    var row4 = Ti.UI.createTableViewRow({title:"Spanish", editable: false});
    
    section2.add(row3);
    section2.add(row4);
    
    // Add data to the table
    var data = [
        section1,
        section2
    ];
    table.data = data;
    
    window.add(table);
    
    // Set up the buttons
    var edit = Titanium.UI.createButton({
        title:'Edit'
    });
    
    edit.addEventListener('click', function()
    {
        window.setRightNavButton(cancel);
        table.editing = true;
    });
    
    var cancel = Titanium.UI.createButton({
        title:'Cancel',
        style:Titanium.UI.iPhone.SystemButtonStyle.DONE
    });
    cancel.addEventListener('click', function()
    {
        window.setRightNavButton(edit);
        table.editing = false;
    });
    
    window.setRightNavButton(edit);
    
    // Add the window to the nav view and open
    var nav = Ti.UI.iPhone.createNavigationGroup({
        window: window
    });
    
    root.add(nav);
    
    root.open();
    

    【讨论】:

    • 嗨,谢谢,但我的问题恰恰相反(为了清楚起见,我对其进行了编辑):只有 一个 表格部分应该是可编辑的,而不是两者。
    • 啊,对不起,我误会了。在这种情况下,您只需将相关行的“可编辑”属性设置为 false,正如@gerry3 所说。为了完整起见,我已将其添加到我的答案中。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多