PickerView внутри реализации TableView в Titanium

Я создал PickerView внутри TableView, то есть на tableViewRow. Но я не могу получить доступ ко всем свойствам Picker.

Например, я не могу установить TextHint для PickerView. Я не могу получить selectedRow в средстве выбора в index.js.

вот мой код в index.xml

<Alloy>
<Window class="container">
    <!-- <Label id="label" onClick="doClick">Hello, World</Label> -->
    <TableView id="table">
        <TableViewSection>
             <TableViewRow>
                <TextField id="id_membership_number" width="Ti.UI.FILL" hintText="Membership Number"/>
            </TableViewRow>
            <TableViewRow>
             <Picker id="id_picker" selectionIndicator="true" onChange="picker_method" value="Sector" selectionIndicator="true">
            <!-- On iOS, views can be added to picker rows -->
                    <PickerColumn id="column1">                
                        <PickerRow title="Real Estate"  id="id_picker_row">0</PickerRow>
                        <PickerRow title="Automobiles"  id="id_picker_row">1</PickerRow>
                        <PickerRow title="Others"  id="id_picker_row">2</PickerRow>
                    </PickerColumn>
            </Picker>
            </TableViewRow>
            <TableViewRow title="Region"/>
            <TableViewRow title="Membership Type"/>
        </TableViewSection>
    </TableView>
    <Button id="id_member_search_btn" onClick="member_search_method"></Button>
</Window>

index.js

function picker_method(event){
    event=$.id_picker;
    Ti.API.info("User selected: " + event.getSelectedRow(0) + column.getSelectedRow(0));
}

В консоли получаю:

User selected: undefined

person obaid    schedule 21.09.2014    source источник


Ответы (1)


На ваш взгляд:

<Alloy>
<Window class="container">
    <!-- <Label id="label" onClick="doClick">Hello, World</Label> -->
    <TableView id="table">
        <TableViewSection>
             <TableViewRow>
                <TextField id="id_membership_number" width="Ti.UI.FILL" hintText="Membership Number"/>
            </TableViewRow>
            <TableViewRow>
             <Picker id="id_picker" selectionIndicator="true" onChange="picker_method" value="Sector" selectionIndicator="true">
             <!-- On iOS, views can be added to picker rows -->
                <PickerColumn id="column1">                
                    <PickerRow title="Real Estate"/>
                    <PickerRow title="Automobiles"/>
                    <PickerRow title="Others"/>
                </PickerColumn>
            </Picker>
            </TableViewRow>
            <TableViewRow title="Region"/>
            <TableViewRow title="Membership Type"/>
        </TableViewSection>
    </TableView>
    <Button id="id_member_search_btn" onClick="member_search_method"></Button>
</Window>
</Alloy>

В вашем JS:

function picker_method(event){
    Ti.API.info("user selected   : "+event.selectedValue);
}

Вы должны прочитать документацию по событию изменения для получения дополнительной информации о том, что передается обработчику onchange http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.Picker-event-изменить

Также обратите внимание, что я удалил повторяющийся идентификатор, который у вас был в PickerRows, идентификатор должен быть уникальным.

person phil    schedule 24.09.2014