2016-06-22 2 views
3

У меня есть popover, который появляется, когда я нажимаю на ячейку. В этом popover есть TableView со строкой. Когда я нажимаю на эту строку, есть три новые строки, которые появляются с анимацией. Я хотел бы удалить эту анимацию. Является ли это возможным ?Как отключить анимацию в меню TableView в Popover?

Вот мой код:

extension PlanningActionTableViewController 
{ 
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return numberOfRows() 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCellWithIdentifier("ActionCell", forIndexPath: indexPath) as!PlanningActionCell 


     // Info cells 
     if registration == nil 
     { 
      if slot.registrations.count > indexPath.row 
      { 
       let contact = slot.registrations[indexPath.row].contact 
       let name = contact.lastname + " " + contact.firstname 
       cell.actionLabel.text = (name.characters.count > 1 ? name : "Réservation en cours") 
       cell.accessoryType = .DisclosureIndicator 
       cell.imageSymbol.image = UIImage(named: "picto.user.default") 

       return cell 
      } 

      cell.actionLabel.text = "Ajouter" 
      cell.accessoryType = .None 
      cell.imageSymbol.image = UIImage(named: "picto.user.add") 

      return cell 

     } 

     // Actions cell 
     switch indexPath.row 
     { 
     case 0: 
      cell.actionLabel.text = "Détails" 
      cell.accessoryType = .None 
      cell.imageSymbol.image = UIImage(named: "picto.user.details") 

     case 1: 
      var state = "Non" 
      if let contact = registration?.contact 
      { 
       state = (contact.isArrived ? "Oui" : "Non") 
      } 

      cell.actionLabel.text = "Est arrivé: " + state 
      cell.accessoryType = .None 
      cell.imageSymbol.image = UIImage(named: "picto.user.valid") 

     default: 
      cell.actionLabel.text = "Supprimer booking" 
      cell.actionLabel.textColor = UIColor.redColor() 
      cell.imageSymbol.image = UIImage(named: "picto.user.delete") 
      cell.accessoryType = .None 
     } 

     return cell 
    } 
} 

NumberOfRows:

func numberOfRows() -> Int 
{ 
    if registration == nil 
    { 
     return slot.subslotsCount 
    } 

    return 3 
} 

Пример в видео:

<iframe src="//gifs.com/embed/1wvE6R" frameborder="0" scrolling="no" width='480' height='220.7665505226481' style="-webkit-backface-visibility: hidden;-webkit-transform: scale(1);" ></iframe>

+1

Прежде всего, какую анимацию вы имеете в виду, расширяя popover или внешний вид новых строк или и то, и другое? Во-вторых, сам метод cellForRowAtIndexPath не отвечает за анимацию строк, добавляет код, в котором вы расширяете источник данных, т. Е. Вставляете новые строки и/или изменяете значение 'numberOfRows'. –

+0

Это появление новых строк. Когда я показываю, что три строки (или более), есть анимация popover, которая растет вниз. – Claudio

+2

Если вы не хотите анимацию, вычислите размер содержимого для popover, который вы хотите, установите его вручную и запускайте обновление источника данных без анимации. –

ответ

1

В вас г viewDidLoad, установить анимацию ложным:

UIView.setAnimationsEnabled(false) 
+0

Спасибо, что работает. – Claudio

+0

Обратите внимание, что это отключит * все * анимации, которые выполняются через статические вызовы 'UIView', что, вероятно, не то, что вы хотите. – NRitH

0

Вы используете (ныне устаревшей) UIPopoverController? Если это так, вы можете называть его setPopoverContentSize(_ size: CGSize, animated animated: Bool), переходя в false для аргумента animated, конечно. Просто вычислите размер таблицы, состоящей из трех строк.

Если вы используете обычный UIViewController с модальным стилем презентации, вы можете установить размер контента для этого рассчитанного размера таблицы.

+0

mmm ok Я проверю это. Благодарю вас: D – Claudio

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