2016-06-22 30 views
3

我有一個彈出窗口,當我點擊一個單元格時出現。在這個popover中,有一個帶有一行的TableView。當我點擊該行時,會有三個新行與動畫一起出現。我想刪除該動畫。可能嗎 ?如何在Popover的TableView選項中禁用動畫?

這裏是我的代碼:

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

首先,你的意思是什麼樣的動畫,擴大新行的彈出窗口或外觀,或兩者?其次,'cellForRowAtIndexPath'方法本身不負責行動畫,在擴展數據源的地方添加代碼,即插入新行和/或修改'numberOfRows'的值。 –

+0

這是新行的外觀。當我顯示三條線(或更多)時,有一個向下增加的彈出式動畫。 – Claudio

+2

如果您不想要動畫,請計算所需彈出窗口的內容大小,手動設置它並觸發無動畫的數據源更新。 –

回答

1

在你[R viewDidLoad中,設置動畫爲false:

UIView.setAnimationsEnabled(false) 
+0

謝謝你的作品。 – Claudio

+0

請注意,這將禁用* UIView靜態調用執行的所有*動畫,這可能不是您想要的。 – NRitH

0

你是否使用了(現在不推薦使用)UIPopoverController?如果是這樣,你可以打電話setPopoverContentSize(_ size: CGSize, animated animated: Bool),當然在false中傳遞animated的說法。只需計算表格中三行的大小即可。

如果您使用模態演示風格的常規UIViewController,則可以將內容的大小設置爲該計算的表大小。

+0

mmm好的,我會檢查。謝謝:D – Claudio