1
當我點擊標籤,這是在燒datebar.xml showPicker()函數,但日期選擇器視圖不可見其在datepicker.xml從另一種觀點認爲Accesing內部父視圖的對象
而且警報顯示,像是「哎呀」我的錯在哪裏?它應該是一個錯誤?自3天以來,我試圖解決這個問題。
不工作也onDone功能在iOS上
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>
datepicker.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
我嘗試過那樣,但我無法通過id訪問index.xml子項。 – Kerberos