2016-04-01 6 views
4

私は現在UITableViewController(PFQueryTableViewController)を使用しています。私はUIViewをTableViewの上に表示したいと思います。SwiftのUITableViewControllerの上にUIViewを追加します

理想的には私はストーリーボードでこれを行いたいので、ラベル/ボタンを追加することができます。しかし、私はあなたがストーリーボードでそれをやり遂げることができるかどうかわからない。そうですか?

私はプログラムで試してみました。私は、最初の最上部にある変数を作成:

var filterLabelView:UIView = UIView()

I次いでViewDidLoadに以下を加えた:

filterLabelView.frame = CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: self.view.frame.width, height: 40) 
filterLabelView.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) 
filterLabelView.backgroundColor = UIColor.redColor() 
self.view.addSubview(filterLabelView) // See below 

私も試みた:

self.view.insertSubview(filterLabelView, aboveSubview: tableView) 

これは赤色のUIViewを作成し、私は上下にスクロールすると、ビューはそれと共に移動するので、それはテーブルビューに埋め込まれているようです。

私は理想的

を作成したい何を、私は、ビューが画面の下に座ってしたい、とない移動するとき、ユーザーがスクロールします。私はそれが見たい方法の例のスクリーンショットは以下の通りです:

enter image description here

私は最善の方法は、その中のUITableViewとのUIViewControllerを使用することですが、私はむしろ、どのように見ているのアプローチを取ることはないだろうと読みました多くの私のアプリはすでに構築されています。

誰でもこの見た目を作成できますか?事前に感謝します

答えて

4

フルレイアウト制御を得るには、UIViewControllerから派生しなければなりません。

ストーリーボードにUITableViewインスタンスを追加するだけです。通常はコンストレインし、エッジフラッシュ、トップフラッシュ、およびcustomView.top = tableView.bottomが必要です。コントローラには通常のコンセントを使用してください。

UIViewControllerは、通常のデータソースとデリゲートプロトコルを採用し、初期化時にUITableViewのプロパティ(デフォルトではviewDidLoad())の役割に自身を割り当てることを覚えておく必要があります。

viewDidAppear()にするとき、選択したセルをクリアに関連する1つの以上フィネスがありますが、UITableViewControllerについての特別な他には何もありません - それはtableViewプロパティを内蔵し、自動的に割り当てられ、デリゲートと非常に柔軟性のないレイアウトでちょうどUIViewControllerです。

これを回避する方法についてのコメントに基づいた追加:これは、ドライバーが木に釘を打つようにする方法があるかどうかを尋ねるようなものです。ちょうど適切なツールを使用してください。 UITableViewControllerの最上位のviewプロパティは、UITableViewです。以下を参照してください。UITableViewController、レイアウトコードのデバッグモードではゼロ符号なし。

これは、ビューのツリー全体がスクロールされたエンティティに埋め込まれているため、すべてのサブビューがスクロールされることを意味します。

ストーリーボードでこの1つのVCをやり直すのは本当に大したことではありません。結局のところ、cellForRowAtIndexPathのレンダリングコードとあなたのデータソースと代理人は、まったく変更しないでください。

補遺2:

密接解析を知らない、これができない場合があります。 (Thanks、Parse。)パースで分離可能なPFQueryTableViewが埋め込まれていない場合は、次の回避策が可能ですが、Objective-Cコードを理解する必要があります:

https://www.parse.com/questions/pfquery-tableview-for-uiviewcontroller

enter image description here

+0

お返事ありがとうございます。私はそれを実際に読んだ。これを達成するためのこれは唯一の方法ですか?私のアプリは今かなり積み重なっており、私のメイン画面を再構築しないようにしたいと考えています。別の方法があると思いますか?事前に感謝 – Nick89

+0

'UIViewController'を使用している@ Nick89は、あなたの' tableview'がセクションを1つしか持たない限り、行くべき最善の方法です。 'viewForHeaderInSection'を設定して、それを"スティッキー "にすることができます。 – kye

+0

@kyeこんにちは、それを追加する方法を教えてもらえますか? – Nick89