2013-11-02 1 views
1

데이터 모델에서 항목 제거에 애니메이션을 적용하려고하면 항목이 제거되지만 분명히 사용하고있는 애니메이션이 항목의 크기를 0으로 설정했기 때문에 데이터 모델에 추가 된 다음 항목이 보이지 않기 때문입니다. 이를 보려면 전체 데이터 모델을 다시로드하거나 내 앱을 닫고 다시 열어야합니다. 애니메이션을하지 않으면 항목이 제거되고 제대로 추가됩니다. 달성하려고하는 효과가 아닙니다. 내 샘플 코드는 다음과 같습니다 :계단식 배열의 데이터 모델에서 항목 제거를 올바르게 애니메이트하려면 어떻게해야합니까?

ListView { 
dataModel: GroupDataModel { 
    id: noteDataModel 
} 

listItemComponents: [ 
      ListItemComponent { 
       type: "item" 
       StandardListItem { 
        id: noteItem 
        title: ListItemData.noteTitle 
        description: ListItemData.noteText 
        animations: [ 
         ScaleTransition { 
          id: deleteAnimation 
          toY: 0 
          toX: 0 
          duration: 500 
          onEnded: {   
           noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath)); 
          } 
         } 
        ] 
       contextActions: [ 
         ActionSet { 
          DeleteActionItem { 
           onTriggered: { 
            deleteAnimation.play(); 
           } 
          } 
         } 
        ] 
} 

답변

3

문제가 발생하는 이유는 성능 향상을 위해 때때로 캐스케이드 프레임 워크가 개체를 재사용한다는 것입니다. 데이터 모델에서 항목을 제거하고 차원을 0으로 설정하면 해당 개체는 차원 속성이 0으로 설정된 시간 동안 메모리에 유지됩니다. 다음에 추가하는 항목은 제거 된 항목 개체를 다시 사용하지만 차원 0이면 표시되지 않습니다.

는이 문제를 해결 제거 후 1.0의 크기로 다시 애니메이션의 onEnded 이벤트 다시 규모의 항목을 변경하려면 :

onEnded: { 
    noteItem.ListItem.view.dataModel.remove(noteItem.ListItem.view.dataModel.data(noteItem.ListItem.indexPath)); 
    noteItem.scaleX = 1.0; 
    noteItem.scaleY = 1.0; 
} 
관련 문제