2013-06-17 2 views
1
    Тип
  • Применение: мобильный
  • Titanium SDK: 3.1.0.GA
  • Платформа & версия: IOS 6,1
  • устройств: IOS Simulator
  • хоста Операционная система: OSX 10.8.3
  • Titanium Studio: 3.1.0.201304151600

Я хотел бы условно показать/скрыть текстовое поле в TableViewRow. Для этого мне нужно увеличить высоту строки. Однако следующий код не работает. TableViewRow на самом деле является контроллером сплава. Я сначала попробовал оживить его, прежде чем понял, что он не может быть анимирован. Теперь я просто пытаюсь изменить высоту, и это даже не работает. Я пробовал использовать метод setHeight наряду с просто установкой свойства height непосредственно безрезультатно. Любые идеи?Как динамически изменять высоту TableViewRow?

var notesVisible = false; 

function notes_click() { 

    if(notesVisible == false) { 
     Ti.API.info('expanding'); 
     $.row.height = 200; 
     // $.notes_container.setHeight(124); 
     notesVisible = true; 
    } else { 
     Ti.API.info('contracting'); 
     $.row.height = 75; 
     $.notes_container.setHeight(0); 
     notesVisible = false; 
    } 

}; 
+1

UPDATE: Не идеальное, но лучшее «решение», которое я нашел, - это удалить и снова добавить строку в элемент управления TableView. Это определенно грязно, но оно будет работать пока до лучших ответов. – ShawnCBerg

ответ

2

Есть два хороших способа сделать это, оба должны быть выполнены из прослушивателя событий щелчка.

Метод 1) Один из способов заключается непосредственно изменить «высоту» переменную строки Метод 2) Во-вторых, чтобы создать новую строку и заменить текущую строку с новой строки

Метод 1 больше но я обнаружил, что это глючит в зависимости от того, какую версию SDK вы используете, но с 3.1.0 она должна работать. Оба метода должна быть вызвана из защелкивания EventListener как его проще сказать Titanium, какая строку действовать на основе по щелчку

Так вот примеру,

currentTableview.addEventListener('click',function(e) 
{ 
    // DO whatever your row is supposed to do when clicked 

    // Now lets change the height of the row to a new height, 200 in this example 
    e.row.height = 200 
} 

С методом два, он предполагает создание новая строка, а затем заменить текущую строку с этим вызовом

currentTableview.updateRow(e.index,newlyCreatedUpdatedRow); 
+0

По какой-то причине я не видел метод updateRow. Я вызывал deleteRow и insertRowBefore. updateRow намного чище, поэтому спасибо за это предложение! Я попытался изменить высоту в событии clickView таблицы безрезультатно. Это никогда не изменит высоту. Никаких исключений. – ShawnCBerg

0

Я знаю его старый вопрос, заданный кем-либо, кроме решения при условии не будет работать, и я думаю, что лучшим решением для этого является путем рекурсивной функции и изменения высота вашего ряда и нужно играть с видимостью просмотров внутри этой строки, надеюсь, поможет кому-то :)