2016-06-14 3 views
1

다른 것들 중에서 버튼이 포함 된 uitableviewcell (cell1)의 하위 클래스가있는 곳에서 tableview를 만들려고합니다. 이 버튼은 cell1에서 버튼을 클릭하면 바로 아래에있는 uitableviewcell (cell2)의 다른 하위 클래스를 추가 및 제거합니다. 나는 내가 원하는 것을 꽤 가난한 일러스트를 첨부했습니다. enter image description here특정 UITableViewCell 아래에서 UITableViewCell 추가 및 제거

내가 시도한 것은 버튼을 두드렸을 때 cell1의 배열 [indexPath.row + 1]에있는 셀 객체의 배열에 cell2를 삽입 한 다음 탭하여 닫을 때 해당 객체를 배열에서 제거하는 것입니다. 세포. 삽입 또는 셀을 제거한 후에 배열을 반영하도록 업데이트하려면 tableView를 다시로드해야합니다. 그러나이 위치에서 나사가 위로 올라야하고 올바르게 동작해야합니다. 아래의 코드는 더 나은 그림을 제공합니다 :

var tableCellObjects: [NSObject] = [] //grab the cell objects from an API call and append the cell2Object when a cell1 is expanded 


func moreButtonTapped(sender: UIButton) { 

    var indexPath: NSIndexPath! 

    if let superview = sender.superview { 
     if let cell = superview.superview as? Cell1 { 
      indexPath = tableView.indexPathForCell(cell) 
     } 
    } 

    if tableCellObjects[sender.tag].isKindOfClass(Cell1Object) { 
     let cell1Object = tableCellObjects[sender.tag] as! Cell1Object 

     if cell1Object.expanded { 
      cell1Object.expanded = false 
      sender.setImage(UIImage(named: "MoreButtonClosed.png"), forState: .Normal) 
      tableCellObjects.removeAtIndex(indexPath.row+1) 

      tableView.reloadData() 
     } else { 
      cell1Object.expanded = true 
      sender.setImage(UIImage(named: "MoreButtonOpen.png"), forState: .Normal) 
      tableCellObjects.insert(Cell2Object(param1, param2: param2), atIndex: indexPath.row+1) 
      tableView.reloadData() 
     } 

    } 
} 
+0

코드가 많은 간단한 질문. 그냥 키 코드를 게시하십시오. – Lumialxk

+0

나는 보풀 부호처럼 보이는 것을 지웠다. 남은 것은 세포를 추가/제거하는 기능입니다. 그게 핵심 코드의 의미인가요? – Frodgers

답변

1

데이터 변경, 당신은 데이터 소스를 업데이트 한 다음 삽입// 재 장전 인덱스 경로를 삭제해야합니다.

public func insertRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 
public func deleteRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 
public func reloadRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) 

을 그리고 난 당신이 애니메이션이 원활하게 .Fade를 사용하는 것이 좋습니다 : 다음과 같은 기능을 사용합니다.