2016-09-08 8 views
0

UITableViewController(ヘッダのような)の上にUIViewを固定する必要があります。私はこれを試した:UiViewはUiTableViewControllerの上に固定されています

override func scrollViewDidScroll (scrollView: UIScrollView) { 
    var fixedFrame: CGRect = self.uiTopView.frame; 
    fixedFrame.origin.y = scrollView.contentOffset.y; 
    self.uiTopView.frame = fixedFrame; 
} 

しかし、それは動作しないと私はなぜわからない。誰かが何か考えている?

ViewController1はUIContainerViewが含まれています。このコンテナビューは、あなたのtableViewControllerにセグエ が埋め込まれている:

+0

、y'値 'に66を加えます。それは役に立ちますか? – rmaddy

+1

'storyboard'を通して' tableViewController'を追加しましたか?もしそうなら、 'tableView'の最上部に' UIView'を追加することができます。 – Santosh

+0

rmaddy、返事ありがとうございます。それは効果をもたらさなかった。 –

答えて

0

これは、これを達成する一つの方法は、以下のような構造が可能になるUIContainerView 内のUITableViewControllerを追加することで、実行することはできません。

次に、ビューをViewController1に追加できます。

+0

真剣に!これはとてもイライラしています。とにかくお返事ありがとうございました。私はあなたの提案を試みます。 –

0

実際にUIViewControllerの代わりにtableViewを使用してUITableViewControllerを使用するのはなぜですか?

ヘッダビューを追加してからヘッダのフレームに応じてtableviewを追加してください。例えば

: `輸入のUIKit

クラスのViewController:のUIViewController、UITableViewDelegate、UITableViewDataSource { するvar fixedLabel:UILabel! var tableView:UITableView!

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    self.tableView.frame = CGRectMake(0, self.fixedLabel.frame.maxY, self.view.frame.width, self.view.frame.height-70) 
    self.fixedLabel.frame = CGRectMake(0,0,self.view.bounds.width,70) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.fixedLabel = UILabel() 
    self.fixedLabel.backgroundColor = UIColor.blueColor() 
    self.fixedLabel.text = "This is a fixedLabel" 
    self.fixedLabel.textAlignment = .Center 

    self.tableView = UITableView() 
    self.tableView.delegate = self 
    self.tableView.dataSource = self 

    self.view.addSubview(fixedLabel) 
    self.view.addSubview(tableView) 

} 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


    var cell : UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cell") 

    if cell == nil { 
     cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 
    } 

    cell?.textLabel?.text = "Your text" 
    return cell! 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 3 
} 

}テストとして '

+0

Mat Grltありがとうございました。実際、私の場合、UiTableViewControllerを使用する理由があります。私はあまりコードを変更しないいくつかのソリューションを探しています。しかし、私はこれが不可能だと思う。とにかくお返事ありがとうございました。 –

関連する問題