2012-08-14 5 views
0

TableViewCustom Objects의 배열에있는 단일 필드의 값으로 채우려고하지만, TableView이 배열로 채워지지 않습니다. Reservacion라는 Custom Object에서 nombre라는사용자 정의 개체의 단일 필드로 TableView를 채우는 방법?

function SearchWindow(){ 
    var self = Ti.UI.createWindow({ 
     backgroundColor:'#d0d0d0d' 
    }); 
    var Cloud = require('ti.cloud'); 
    Cloud.debug=true; 

    var searchBar = Ti.UI.createSearchBar({ 
     showCancel:false 
    }); 
    var data = []; 
    Cloud.Objects.query({ 
     classname:'Reservacion' 
    }, function(e){ 
     if(e.success){ 
      for(var i=0; i< e.Reservacion.length; i++){ 
       data.push({title : e.Reservacion[i].nombre}); 
      } 
     } else { 
      alert('Error \n ' + ((e.error && e.message) || JSON.stringify(e))); 
     } 
    }); 

    var tableView = Ti.UI.createTableView({ 
     backgroundColor:'#d0d0d0', 
     search:searchBar, 
     data: data, 
     filterAttribute : 'title' 
    }); 

    self.add(tableView); 
    return self; 
} 

내가 필드의 값과 데이터 배열을 작성 합니다만, 데이터가 Table View에 표시되지 않는이 내 코드입니다. 내 접근 방식이 잘못 되었나요? 그렇다면 어떻게하면 내 Table View을 원하는 데이터로 채울 수 있습니까?

답변

1

테이블보기를 작성한 후 의 필드를 데이터 배열으로 푸시합니다. 즉, 테이블 뷰를 만들 때 행이 없으므로 아무 것도 볼 수 없습니다. 데이터가 완전히 채워진 후 tableView.data = data;을 설정하여이 문제를 해결하십시오 (Cloud.Objects.query 콜백에서). 나는 그것이 작동하는 희망

var tableView = Ti.UI.createTableView({ 
    backgroundColor:'#d0d0d0', 
    search:searchBar, 
    filterAttribute:'title' 
}); 

:

data를 지정하지 않고 테이블 뷰를 인스턴스화.

+0

아니요, 'TableView'가 비어있는 것으로 표시됩니다. 데이터 배열이 채워지는지 확인하기 위해 몇 가지 알림을 보냈습니다. 나는 TableView가 배열로 채워지지 않는 이유에 대해 잘 모른다. –

+0

@UrielArvizu : 테이블보기가 있습니까? 그냥 tableview의 색상을 변경하고 –

+1

을 참조하십시오. 솔루션을 찾았습니다. 콜백 함수 안에 배열을 추가해야합니다. 콜백 함수는 비동기식이므로 Tableview에 배열을 채울 때 함수가 채워지는 시간에 채울 필요는 없습니다. 라는. 최종 결과는 다음과 같습니다. http://pastebin.com/kj5Xsw7h –

관련 문제