2015-10-08 3 views
1

В моем приложении у меня есть UITableView с пользовательской ячейкой XIB, когда пользователь нажимает на любую ячейку, ячейка должна расширяться и показывать содержимое, если он снова нажмет на нее, ячейка должна свести к минимуму.
Моя проблема: если есть какая-либо ячейка, расширенная до этого, и пользователь нажимает на другую ячейку, сначала сначала сворачивается первая ячейка, затем эта ячейка будет расширяться.Развернуть/Свернуть UITableView Пользовательская ячейка

Я использую: tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)

, но он не работает. любая проблема перед этим?

Буду благодарен за любую помощь.

+0

Попробуйте следующее: - http://www.cocoanetics.com/2011/03/expandingcollapsing-tableview-sections/ – pkc456

ответ

2

Вы можете попробовать эти следующие шаги:

  • определяют

    var expandHeight: CGFloat = 100 
    var normalHeight: CGFloat = 50.0 
    var currentSelected = 0 
    
  • использовать их в

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    
         if indexPath.row == currentSelected { 
    
          return expandHeight 
         } 
         else { 
    
          return normalHeight 
         } 
        } 
    
  • называют в

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    
        tableView.beginUpdates() 
    
        currentSelected = indexPath.row 
    
        tableView.endUpdates() 
    } 
    
+0

Хорошее решение, но не будет анимировать ячейку, чтобы сделать ее большой и маленькой. – Vakas

+0

@ Вакас: он анимируется автоматически. – truongky

0

Написать следующий алгоритм в методе didSelectRowAtIndexpath: делегировать метод в UITableView.

1) Проверьте, не расширена ли какая-либо ячейка или нет? (Можно проверить, поддерживая переменную свойства indexPath, которая помогает снова получить эту ячейку для выполнения любой операции с cellForRowAtIndexpath :).

2) Если ДА, установите высоту ячейки этого стола по умолчанию, скажем 44.0, иначе ничего не делать.

3) Затем примените расширенную функцию ячейки (метод для расширения ячейки) в выбранной ячейке, а также обновите свойство indexPath с помощью новой индексной ячейки выбранной ячейки.

Смежные вопросы