2016-06-22 7 views
3

Ich habe ein Popover, das erscheint, wenn ich auf eine Zelle klicke. In diesem Popover gibt es eine TableView mit einer Zeile. Wenn ich auf diese Zeile klicke, erscheinen drei neue Zeilen mit einer Animation. Ich möchte diese Animation entfernen. Ist es möglich ?Wie deaktiviert man Animation in TableView Auswahl in Popover?

ist hier mein Code:

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 
} 

Beispiel im Video:

<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

Zunächst, was für eine Art von Animation meinen Sie, erweitern das Popover oder Aussehen der neuen Zeilen oder beides? Zweitens ist die 'cellForRowAtIndexPath'-Methode selbst nicht für die Zeilenanimation verantwortlich, sondern fügt den Code hinzu, in dem Sie die Datenquelle erweitern, d. H. Die neuen Zeilen einfügen und/oder den Wert von' numberOfRows' ändern. –

+0

Es ist das Aussehen der neuen Zeilen. Wenn ich diese drei Zeilen (oder mehr) zeige, gibt es eine Animation des Popover, die nach unten steigt. – Claudio

+2

Wenn Sie die Animation nicht möchten, berechnen Sie die Inhaltsgröße für das gewünschte Popover, legen Sie sie manuell fest und lösen Sie das Aktualisieren der Datenquelle ohne Animationen aus. –

Antwort

1

In Sie r viewDidLoad, setzen Sie Animationen auf false:

UIView.setAnimationsEnabled(false) 
+0

Danke das funktioniert. – Claudio

+0

Beachten Sie, dass dies * alle * Animationen deaktiviert, die über 'UIView' statische Aufrufe ausgeführt werden, was wahrscheinlich nicht Ihren Vorstellungen entspricht. – NRitH

0

Verwenden Sie einen (inzwischen veraltet) UIPopoverController? Wenn ja, können Sie setPopoverContentSize(_ size: CGSize, animated animated: Bool) darauf anrufen, natürlich unter false für das animated Argument übergeben. Berechnen Sie einfach die Größe, die die Tabelle mit drei Zeilen hätte.

Wenn Sie einen normalen UIViewController mit einem modalen Darstellungsstil verwenden, können Sie die Größe des Inhalts auf diese berechnete Tabellengröße festlegen.

+0

mmm ok ich werde das überprüfen. Danke: D – Claudio

Verwandte Themen