2016-05-11 7 views
0

のサブテーブルビューを追加し、私はこれで少し問題ました:は、テーブルビュー

gif animation

テーブルビューは、カテゴリおよびカテゴリが表示サブカテゴリ選択時に追加別のテーブルビューを表示するために私のビューに追加されます。しかし、トップセルとの相互作用は認識されず、なぜ私は理解できません!誰もこの問題を解決するためのアイデア、またはそれらのアニメーションを可能にする別の方法として..

コードを表示するために複雑になっているが、私ははっきりと説明しようとします

  1. メインコントローラがFilterViewController継承でありますUIViewController
  2. 「カテゴリ」行を選択すると、CategoryFilterViewControllerというインスタンスが作成され、ビューがFilterViewController'sビューに追加されました。
  3. CategoryFilterViewControllerで、行が選択されると、新しいtableViewをインスタンス化してビューに追加します。

CategoryViewController storyboard view

FilterViewControllerの一部、変数と出口
あなたは、私はプログラム的

var contentViewCatHeightContrain: Constraint? = nil 
var contentViewCatBottomContrain: Constraint? = nil 

@IBOutlet weak var filterTableView: UITableView! 
@IBOutlet weak var submitFilterButton: UIButton! 

"カテゴリー" 行が選択されたときは、ここを参照してくださいいくつかの制約を作るためにSnapKitを使用見ることができ、私はこのコードを実行します。

func displayCat(show: Bool, cell: FilterCell) { 
    let cellRow = self.filterTableView.indexPathForCell(cell)! 
    if(cellRow.row == 0) { 
     if(self.viewModel.categoryContentsView == nil) { 
      if let vc = self.storyboard?.instantiateViewControllerWithIdentifier("CategoryFilterView") as? CategoryFilterView { 
       self.viewModel.categoryContentsView = vc 
       self.viewModel.categoryContentsView.view.frame = CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, 0) 
       self.view.addSubview(self.viewModel.categoryContentsView.view) 
       self.addChildViewController(vc) 
       self.viewModel.categoryContentsView.view.snp_makeConstraints(closure: { (make) -> Void in 
        self.contentViewCatHeightContrain = make.height.equalTo(0).constraint 
        make.left.equalTo(0) 
        make.right.equalTo(0) 
        self.contentViewCatBottomContrain = make.bottom.equalTo(0).constraint 
       }) 
      } 
     } 
     self.viewModel.categoryContentsView.view.didMoveToSuperview() 
     self.view.bringSubviewToFront(self.viewModel.categoryContentsView.view) 
    } 
} 

そしてCategoryViewController上、コンセント:

@IBOutlet weak var catTableView: UITableView! 
@IBOutlet weak var topCatTableView: NSLayoutConstraint! 
@IBOutlet weak var subCatHeightContrain: NSLayoutConstraint! 
@IBOutlet weak var subCatTableView: UITableView! 

と行が選択:

func showHideTableView(show: Bool) { 
    if(show) { 
     self.topCatTableView.constant = -75 
     self.subCatHeightContrain.constant = UIScreen.mainScreen().bounds.size.height - 95 
    } 
    else { 
     self.topCatTableView.constant = 0 
     self.subCatHeightContrain.constant = 0 
     self.catTableView.reloadData() 
    } 
} 
+0

を見つけるために私を助けている、と答えました。あなたが探していると思うのは、あなたの含まれている 'ViewController'のメインビューに別のtableViewを追加することです。 – ZGski

+0

コードを表示する!おしゃべり – Coder1000

+0

別のtableViewを追加するのではなく、tableViewにいくつかのセルを追加することをお勧めします。 – penatheboss

答えて

0

私は最終的にCategoryViewController上の第二のtableViewトップcontraintが0値ではありませんでした何が悪いの

ました。 私はトップセルを意味する子tableView上でfalseにclipSubviewsを設定していましたが、フレーム外だったために対話を処理できません。誰にでも

感謝のは、あなたは間違いなくあなたの既存のtableView上に別の `UITableView`を追加する必要はありませんソリューション

0

これは、拡張可能かつ折り畳み式テーブルビュー

http://www.appcoda.com/expandable-table-view/

を作成するためにあなたを助けることができる

インデックスでdidSelectedRowをオンにすると、ナビゲーションバーのタイトルが変更され、特定のインデックスにテーブルがスクロールされてトップに表示されます。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{ 

    self.title = // String from your array which is displayed on cellForRowAtIndex 

    let no = indexPath.row + 4 // Particular no which scroll table view up side so your selected row comes on first 

    let lastIndex = NSIndexPath(forRow: no, inSection: 0) 

    tableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: .Bottom, animated: true) 

} 

バックボタンとナビゲーションバーのタイトルのアニメーションで妥協する必要があるのは1つだけです。

フラグis_expandableを使用すると、ビューコントローラまたは折り畳みテーブルをポップすることができます。

希望すると、あなたの解決策を見つけ出すのに役立ちます。

すべて最高です。

+0

私はあなたのやり方を試しました、それは仕事ですが、私は必要なアニメーションがありません。しかし、あなたの答えは何が間違っているのかを見つけるのを助けました!だから、ありがとう! – guiltance

+0

すべて最高です。ハッピーコーディング。 – Hasya

関連する問題