2016-06-25 8 views
1

enter image description hereは、私は動的にテーブルビューの高さに合わせて、コンテナの高さを変更しようとしている動的

コンテナの高さを変更します。私は現在、Newsfeed View ControllerでprepareForSegue()としています。ただし、newsfeedContainer.frame.height = 10は機能しません。

編集:私は制約を編集しようとしています。次のコードで次のエラーが表示されます。

エラー:EXC_BAD_INSTRUCTION

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "NewsfeedSegue" { 
      print("NewsfeedSegue Triggered") 
      var newsfeedTableController: NewsfeedTableViewController? 
      newsfeedTableController = segue.destinationViewController as? NewsfeedTableViewController 
      if newsfeedTableController != nil { 
       containerHeightConstraint.constant = newsfeedTableController!.newsfeedTableView.frame.height 
      } 
     } 
    } 

編集2:私はあなたが自動レイアウトを使用している(そして、あなたはほぼ確実にしている場合は、テーブルビューコントローラのviewDidLoad()

let viewController = parentViewController as? NewsfeedViewController 
     viewController?.containerHeightConstraint.constant = newsfeedTableView.frame.height 
+0

ビューを使用してレイアウトのサブビューを行い、高さを設定します。制約を使用している場合は、コンセントをコンストレインに追加し、定数を変更します。 – Brandon

+0

インターフェイスビルダーのコンテナの垂直圧縮抵抗の優先度を下げようとしましたか? – Luke

+0

@Brandon制約を設定しようとしていますが、テーブルの高さを取得するときにエラーが発生すると思います。編集をご覧ください。 –

答えて

1

に次のコードを使用して、それをしなかった、それはですデフォルト)、ビューのフレームを変更すると通常は機能しません。レイアウトの更新がトリガーされると、制約(指定した制約またはシステム生成制約)がフレームを引き継ぎ、フレームを以前の値にリセットします。

あなたのコメントで、AutoLayoutを使用している場合、1つまたは複数の制約を追加し、それらの制約をアウトレットにしてから、制約の定数値を変更する必要があります。

+0

はい私はAutoLayoutを利用しています。私は制約を設定するシステムをセットアップし始めました。私が試して、TableView上でviewController.frame.heightを使用すると、私は編集に入れたエラーを受け取ります。 –

+0

prepareForSegueから、またはView Controllerの外部からアウトレットを操作することはできません。代わりに、宛先VCにプロパティを追加し、viewDidLoadで制約を設定する必要があります。 –

+0

テーブルコントローラ内のコンテナのIBOutletを取得するにはどうすればよいですか? –

関連する問題