2016-05-05 4 views
0

現在、私はすべてのストーリーボードビューコントローラをコードに渡していますが、現在私は視覚的な問題に遭遇しました。それはいくつかの理由で私のコードのaddSubView()静的位置を設定するテーブルビュー内で表示する(スウィフト)

これは、それが上でどのように見えるかであるに複製されません私のストーリーボード

enter image description here

これは、テーブルビュー内のビューを追加するコードです

let profileView = UIView(frame: CGRectMake(0,0,500,45)) 
    profileView.backgroundColor = UIColor(red:0.35, green:0.77, blue:0.66, alpha:1) 
    self.tableview.addSubview(profileView) 

このコードでは、ビューを上または下に移動するとビューがスクロールされ、ストーリーボードVCではTableviewのみがスクロールされ、ビューは配置された位置に静的に固定されます。いいね することが。 "静的"

enter image description here

また、これは私が達成したいものをilustrates。 enter image description here

答えて

0

私はこれを一緒に投げました。それはどのように行うのかの例です。しかし、UITableviewはこのように使われることは意図されていませんでした。セル0はカスタムビューでカバーされていることがわかります。あなたは、あなたのデータソースからtableviewを埋めるときにそれを考慮する必要があります。

enter image description here

import UIKit 

class testTableVIewController: UITableViewController { 
    @IBOutlet var theTableView: UITableView! 
    var profileView:UIView 

required init?(coder aDecoder: NSCoder) { 
    profileView = UIView(frame: CGRectMake(0,0,500,45)) 
    profileView.backgroundColor = UIColor(red:0.35, green:0.77, blue:0.66, alpha:1) 
    super.init(coder: aDecoder) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.theTableView.addSubview(profileView) 

} 
override func scrollViewDidScroll(scrollView: UIScrollView) { 
    profileView.frame = CGRectOffset(profileView.frame, scrollView.contentOffset.x, 0); 

} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 20 
} 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = theTableView.dequeueReusableCellWithIdentifier("cell") 
     cell?.textLabel?.text = String(indexPath.row) 
     return cell! 
    } 
} 
代わりにあなたが何をすべきか、テーブルビューのサブビューとしてビューを置きます。

  1. ビューを作成します。 (私は便宜のためにこのコンテンツビューを呼び出します)
  2. このビューにコンテンツビューを追加します。
  3. コンテンツビューにtableviewを追加します。

コンテンツビュー内で、ビューとテーブルのビューを隣り合わせに配置するだけです。 これは、スクロール・テーブル・ビューと静的ビューとの間に所望の効果をもたらす。逆のステップ2 & 3目的のエフェクトがテーブルビュー上のフローティングビューである場合。

Oh btw。あなたがコード内でそれをすべてやっているのであれば、そのようなレイアウトに変更するのは簡単です。あなたのテーブルビューコントローラをビューコントローラに変更し、UITablviewプロトコルを採用するだけです。

class testTableVIewController: UITableViewController { 
class testTableVIewController: UIViewController,UITableViewDataSource,UITableViewDelegate { 

次に、tableviewクラスのプロパティを追加します。また、正しい位置のself.viewに追加します。あなたの緑色のビューをself.view

に追加することを覚えておいてください。そのような場合は、コードをまったく変更する必要はありません。

+0

私が探しているのは、ViewControllerを作成して現在のロジックのほとんどを変更する必要があるためです。 UIViewControllerではなく、UITableviewController以降、これを行う簡単な方法があるはずです。 – eddwinpaz

+0

あなたが探していることは実際にはより困難です。スクロール位置を追跡し、テーブルビューがスクロールするとビューを移動する必要があります。そのためにはscrollViewDidScrollを使用してください。私が言っているように、実際にはそれを変更するコードはほとんどありません。 – kent

+0

質問を編集して新しい画像を追加しました – eddwinpaz

関連する問題