Когда я нажимаю на ярлык, который находится в datebar.xml функции showPicker() обожженной но DatePicker вид не виден что в datepicker.xmlэкранного объект родительского вида внутри другого зрения
Также предупреждение показывают, как «упс» Где моя вина? Это должно быть ошибка? Я пытаюсь решить эту проблему с 3-х дней.
Также onDone функция не работает, что в datepicker.js на прошивке
Спасибо заранее. Я проверяю Platfom является IOS и мой SDK является 5.1.1 GA
<Alloy autoStyle="true">
<Window>
<View id="ViewDateBar">
<Require type="view" src="datebar" id="DateBar" />
</View>
<Require type="view" src="datepicker" id="DatePicker" />
</Window>
</Alloy>
datebar.xml
<Alloy>
<View id="datebar">
<Label onClick="ShowDatePicker"/>
</View>
</Alloy>
datebar.js
var ViewDatePicker = Alloy.createController("datepicker", {
onDone : function(SelectedDate) {
Alloy.Globals.JsonQsDateCurrent = SelectedDate;
}
});
function ShowDatePicker() {
ViewDatePicker.getView().showDatePicker();
}
datepicker.xml
<Alloy>
<View id="datepicker" visible="false">
<Picker id="picker" />
</View>
</Alloy>
датаpicker.js
var moment = require("alloy/moment");
var args = arguments[0] || {};
var onDone = args.onDone;
init();
function init() {
if (OS_IOS) {
$.picker.setType(Titanium.UI.PICKER_TYPE_DATE);
}
}
function showDatePicker() {
if (OS_IOS) {
//> The iOS Picker will be slide up anddown the screen.
$.picker.setValue(Alloy.Globals.DateCurrent.toDate());
$.datepicker.visible = true;
} else if (OS_ANDROID) {
//> The Android picker will be a pop-up dialog.
$.picker.showDatePickerDialog({
value : Alloy.Globals.DateCurrent.toDate(),
callback : function(e) {
if (e.cancel) {
Ti.API.info('User canceled dialog');
} else {
done(e);
}
}
});
}
}
function done(e) {
if (OS_IOS) {
hideDatePicker();
onDone(selectedDate($.picker));
} else if (OS_ANDROID) {
if (!e.cancel) {
onDone(selectedDate(e));
}
}
}
function hideDatePicker() {
$.datepicker.visible = false;
}
function selectedDate(picker) {
return moment(picker.value);
}
$.datepicker.showDatePicker = showDatePicker;
$.datepicker.hideDatePicker = hideDatePicker;
Большое спасибо, но я не могу реализовать ваше предложение, и я не могу изменить свою структуру приложения :( – Kerberos
В вашем оконном контроллере установите ссылку на родителя: '$ .DateBar.parent = $ .win; ' – skypanther
Я так пробовал, но я не могу получить доступ к child.xml index.xml по id. – Kerberos