2017-11-13 11 views
0

私は2つのtableviewコントローラを子として持つ私のビューのコンテナを持っています。 enter image description here 私は私がコンテナのサイズを大きくした後、その容器底部に各テーブルビューを修正したいチャイルズ親の底にtableviewを修正する制約を追加する方法

func makeAndAddVC<T: UIViewController>() -> T { 
     let vc = T() 
     self.addChildViewController(vc) 
     return vc 
    } 

を作るためのクラスで、このプロパティとしてチャイルズ

lazy var photoFeedVC: UserPicsTableViewController = self.makeAndAddVC() 
    lazy var postFeedVC: PostFeedVC = self.makeAndAddVC() 

機能を持っていますviewDidAppearにあります。

photoFeedVC.tableView.snp.makeConstraints({(make) -> Void in 
     make.bottom.equalTo(containerView) 
    }) 
    postFeedVC.tableView.snp.makeConstraints({ make -> Void in 
     make.bottom.equalTo(self.view) 
    }) 

この

はcontrainstのトラインが下に修正することですが、Xcodeはキャッチされない例外により「NSGenericException」、理由に私のアプリを終了、このエラー

***を与えた:「アンカーとの制約を有効にできません と に共通の祖先がないためです。制約またはその アンカーは、異なるビュー階層の項目を参照していますか?それは です。ここ

問題のエラーメッセージは、同じ階層にない2つのビューを固定していると言っている

override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(true) 
     print("aparecio la vista") 
     containerView.frame.size.height += 150 
     self.feed.frame.size.height += 150.0 
     self.photoFeedVC.tableView.frame.size.height += 150.0 
     self.postFeedVC.tableView.frame.size.height += 150 
     self.scrollView.contentSize.height = containerView.height + 10 
     self.scrollView.layoutIfNeeded() 
    } 

答えて

1

コンテナを向上させる方法。あなたはどこかでaddSubview()のコールを逃しています(ただし、私は正確にどこに子ビューコントローラがあるようで、階層のように見えるかわかりません)。

あなたはまた、非常にまれな場合を除いて、あなたが望むものではないフレーム数学と自動レイアウトの両方を行っています。自動レイアウトを使用する場合は、制約を変更してコンテナを拡張し、何も調整しないでください。frame.height

+0

質問を編集してビューの構図を表示し、子どもがビューにどのように追加されるかを表示します。このすべての要素はscrollView内にあります。フレームの増加の問題は、スクロール時にクライアントが上部を隠すように要求したため、コンテナの高さが高くなりました。問題は、両方のテーブルビューがコンテナのように成長しないことです。 –

関連する問題