2016-06-22 2 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

새 행의 모양입니다. 그 세 줄 (또는 그 이상)을 보여 주면 아래쪽으로 증가하는 popover의 애니메이션이 있습니다. – Claudio

+2

애니메이션을 사용하지 않으려면 원하는 팝 오버의 컨텐츠 크기를 계산하고 수동으로 설정하고 애니메이션없이 데이터 소스 업데이트를 트리거하십시오. –

답변

1

당신이 여기에

내 코드입니다 R의 viewDidLoad false로 애니메이션을 설정

UIView.setAnimationsEnabled(false) 
+0

고맙습니다. – Claudio

+0

UIView 정적 호출을 통해 수행되는 * 모든 * 애니메이션이 비활성화된다는 점에 유의하십시오. 이는 아마도 원하는 것이 아닙니다. – NRitH

0

당신은 (지금은 사용되지 않음) UIPopoverController를 사용하고 있습니까? 그렇다면 setPopoverContentSize(_ size: CGSize, animated animated: Bool)으로 전화하여 animated 인수에 false을 전달할 수 있습니다. 표가 3 개의 행으로 구성되는 크기를 계산하십시오.

일반 프리젠 테이션 스타일 인 UIViewController을 사용하는 경우 콘텐츠 크기를 계산 된 테이블 크기로 설정할 수 있습니다.

+0

음 ok 나는 그것을 점검 할 것이다. 고마워요 : D – Claudio

관련 문제