2016-05-05 22 views
0

Derzeit übergebe ich alle meine Storyboard-Viewcontroller an Code, und derzeit habe ich ein visuelles Problem festgestellt. Dass aus irgendeinem Grund nicht repliziert auf meinen Code addSubView()Statische Position einstellen View in Tableview (Swift)

Dies ist, wie es aussieht auf mein Storyboard

enter image description here

Dies ist der Code, der den Blick in den Tableview anhängt

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) 

Das Problem ist, dass mit diesem Code die Ansicht scrollt die Ansicht, wie ich nach oben oder unten gehe, und mit dem Storyboard VC, scrollt nur die Tableview und meine Ansicht bleibt einfach auf der Position statisch ich und das ist die Art und Weise ich mag ich sein. "Statische"

enter image description here

Dieses ilustrates auch, was ich erreichen will. enter image description here

Antwort

0

Ich warf das zusammen für Sie. Es ist ein Beispiel dafür, wie es geht. Das UITableview sollte jedoch nicht auf diese Weise verwendet werden. Sie können sehen, dass die Zelle 0 von Ihrer benutzerdefinierten Ansicht abgedeckt wird. Sie müssen dies berücksichtigen, wenn Sie die Tabellenansicht von Ihrer Datenquelle aus ausfüllen.

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! 
    } 
} 

enter image description here

statt die Ansicht als Teilansicht der Tabellenansicht setzen, was Sie tun sollten, ist.

  1. erstellen Sie eine Ansicht. (Ich werde diese Inhaltsansicht aus Gründen der Zweckmäßigkeit nennen)
  2. fügen Sie die Sicht dazu die Inhaltsansicht hinzu.
  3. Fügen Sie die Tabellenansicht zur Inhaltsansicht hinzu.

Positionieren Sie die Ansicht/Tabellenansicht einfach in der Inhaltsansicht nebeneinander. Dies hat den gewünschten Effekt einer Scroll-Tabellenansicht und einer statischen Ansicht nebeneinander. umgekehrter Schritt 2 & 3 Wenn der gewünschte Effekt eine schwebende Ansicht über die Tabellenansicht ist.

Oh zw. Das Wechseln zu dieser Art von Layout ist ziemlich einfach, wenn Sie alles in Code machen. Wechseln Sie einfach Ihren Tableview-Controller zu einem View-Controller und übernehmen Sie die UITablview-Protokolle.

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

dann fügen Sie eine Eigenschaft für eine Tableview-Klasse hinzu. Fügen Sie es auch zu self.view in der richtigen Position hinzu. Denken Sie auch daran, Ihre grüne Ansicht zu self.view

hinzuzufügen, wenn Sie es so tun, müssen Sie nicht viel Code überhaupt ändern.

+0

Nicht die Antwort, die ich suche, da es mich zwingt, einen Viewcontroller zu erstellen und den Großteil meiner aktuellen Logik zu ändern. Es sollte einen einfacheren Weg geben, dies seit UITableviewController und nicht ein UIViewController zu tun. – eddwinpaz

+0

Was Sie suchen, ist ein wirklich schwieriger. Sie müssen die Bildlaufposition verfolgen und die Ansicht verschieben, während die Tabellenansicht scrollt. Verwenden Sie scrollViewDidScroll für das. Es ist wirklich sehr wenig Code zu ändern, um es so zu machen, wie ich sage. – kent

+0

Ich habe meine Frage bearbeitet und ein neues Bild hinzugefügt – eddwinpaz