Установить статический вид положения внутри Tableview (Swift)

В настоящее время я передаю все мои раскадровки viewcontrollers в код, и в настоящее время я столкнулся с визуальной проблемой. Который по какой-то причине не реплицируется в моем коде addSubView()

Вот как это выглядит на моей раскадровке

Введите описание изображения здесь

это код, который добавляет представление внутри tableview

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, и мой взгляд просто остается статическим на позиции, которую я разместил, и это так, как мне нравится. «статический»

Введите описание изображения здесь

Это также говорит о том, чего я хочу достичь.Введите описание изображения здесь

1 ответ

  1. Я собрал это для тебя. Это пример того, как это сделать. Однако UITableview не был предназначен для использования таким образом. Вы видите, что ячейка 0 покрыта пользовательским представлением. Вы должны будете учитывать это при заполнении tableview из вашего источника данных.

        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, Если желаемым эффектом является плавающий вид над tableview.

    Кстати. Изменение такого макета довольно легко, если вы делаете все это в коде. Просто измените контроллер tableview на контроллер вида и примите протоколы UITablview.

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

    затем добавьте свойство для класса tableview. Также добавьте его к себе.просмотр в правильном положении. также не забудьте добавить свой зеленый вид на себя.вид

    если вы сделаете это таким образом, вам не придется менять много кода вообще.