Titanium iPhone: сделать диалог, похожий на этот стандартный интерфейс iPhone? - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь создать диалоговое окно, чтобы пользователь мог выбрать несколько из множества опций переключения. У iPhone есть хорошая модель для этого, в Настройки / Общие / Клавиатуры:

screenshot

Однако я не смог воссоздать это точно: эта задача - показать два раздела таблицы (таблицы?), Но только один редактируемый. (Тот, что со списком клавиатуры.)

Titanium API позволяет редактировать только таблицу, а не раздел. И я не мог понять, как расположить две таблицы для прокрутки вместе. (Я попытался поместить их обоих в ScrollView и т. Д.)

Кто-нибудь может сделать что-то подобное?

РЕДАКТИРОВАТЬ: Вот мой обходной путь, который я считаю неоптимальным. :-( Вместо этого второго раздела таблицы с элементом управления я использую панель инструментов внизу:

dialog

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Вы можете контролировать, является ли любая строка редактируемой или нет, задав для нее редактируемое свойство (по умолчанию используется значение таблицы, если оно не установлено).

1 голос
/ 31 марта 2011

Вам не нужно две таблицы;достаточно одного табличного представления, сгруппированного с отдельными разделами.Таким образом, прокрутка работает отлично, и редактирование работает по всей таблице.Я не уверен, почему редактирование работает только для одного раздела, но я собрал пример, который показывает редактирование, работающее в нескольких разделах таблицы.Для его запуска создайте проект и замените содержимое файла 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();
...