iOS 용 티타늄 모바일 앱을 제작 중입니다. 나는 3 개의 다른 스크린을 언급 할 것이다; 테이블 뷰가있는 홈 화면, "검색 필드"와 "세부 사항"화면이있는 "마스터"화면.티타늄 앱이 여러 번 검색시 하위보기를 예약합니다.
홈 화면에서 마스터 화면으로 이동하면 사용자에게 검색 필드와 메시지가 표시됩니다. 사용자가 검색 필드에 단어를 입력 할 때 메시지를 제거하고 표를 그린 다음 원격 서버에서 PHP 파일을 호출하여 데이터베이스에서 해당 단어를 검색하고 결과를 JSON으로 반환하여 해당 테이블에 표시합니다. 사용자가 결과 중 하나를 선택하면 세부 정보 화면이 표시됩니다. 이 모든 것은 의도 한대로 작동합니다.
사용자가 마스터 페이지로 돌아가서 다른 쿼리를 수행 할 때 문제가 발생합니다. 테이블 데이터를 지우는 버튼이있어서 버튼이 테이블을 효과적으로 지 웁니다. 그러나 두 번째 검색 결과가 표시되고 하나가 세부 정보 페이지를 표시하도록 선택되면 앱은 세부 정보 화면을 표시하지만 해당 화면은 계속 슬라이드 오프되고 두 번째 세부 정보 화면은 슬라이드되어 데이터를 표시합니다.
사용자가 마스터 페이지로 돌아가서 세 번째 쿼리를 수행하면 이와 동일한 문제가 발생합니다. 다시 표에는 결과가 표시되지만 사용자가 하나를 선택하면 두 개의 세부 화면이 슬라이드되어 사용자에게 데이터가 표시됩니다.
위와 같은 방식으로 다른 쿼리를 수행하면 사용자에게 데이터가 표시되기 전에 세 가지 세부 화면이 슬라이드됩니다.
이 패턴은 사용자가 홈 화면으로 돌아갈 때까지 상세 화면을 계속 곱합니다. 그러면 모든 것이 재설정 된 것처럼 보입니다. 여기에 코드 중 일부이다
내 오류가 내가 위에서 설명한 문제를 만드는 원인이되는이 코드에var win = Titanium.UI.currentWindow;
var appsponsor = Ti.UI.createButton({});
win.add(appsponsor);
appsponsor.addEventListener('click',function(e){});
var customSearchBar = Ti.UI.createView({});
var customSearchField = Ti.UI.createTextField({});
customSearchBar.add(customSearchField);
win.add(customSearchBar);
var nolist= Ti.UI.createLabel({});
win.add(nolist);
var businessowner = Ti.UI.createLabel({});
win.add(businessowner);
var view = Ti.UI.createView({});
var table = Ti.UI.createTableView({});
view.add(table);
var message = Ti.UI.createLabel({});
var clear = Ti.UI.createButton({
title: "Clear",
style:Titanium.UI.iPhone.SystemButtonStyle.BORDERED
});
clear.addEventListener("click", function() {
message.hide();
table.setData([]);
tableData = [];
});
Ti.UI.currentWindow.setRightNavButton(clear);
var tableData = [];
function checkInternetConnection(){
return Ti.Network.online ? true : false;
}
customSearchField.addEventListener("return", function(e) {
if(checkInternetConnection()){
nolist.hide();
businessowner.hide();
win.add(view);
var url = "http://mydomain.com/dir/file.php?title="+e.value;
var xhr = Ti.Network.createHTTPClient({
onload: function() {
Ti.API.debug(this.responseText);
var json = JSON.parse(this.responseText);
if (json.cms_list.length< 1){
win.add(message);
}
for (i = 0; i < json.cms_list.length; i++) {
client = json.cms_list[i];
row = Ti.UI.createTableViewRow({});
var clientlist = Ti.UI.createLabel({});
row.add(clientlist);
tableData.push(row);
}
table.addEventListener('click',function(e){
var row = e.row;
var clientlist = row.children[0];
var win = Ti.UI.createWindow({
url: 'clientdetail.js',
title: clientlist.text
});
var clientlist = clientlist.text;
win.clientlist = clientlist;
Ti.UI.currentTab.open(win,{animated:true});
});
table.setData(tableData);
},
onerror: function(e) {
Ti.API.debug("STATUS: " + this.status);
Ti.API.debug("TEXT: " + this.responseText);
Ti.API.debug("ERROR: " + e.error);
alert('There was an error retrieving the remote data. Try again.');
},
timeout:5000
});
xhr.open("GET", url);
xhr.send();
}
else{
alert('Your internet connection is not available');
}
});
?