简体   繁体   中英

UITableView embedded in UIView, empty rows

I am working on a new application and I have some problems:

I am developing everything programmatically, so I created a SCROLLVIEW and a CONTAINERVIEW for all my pages. containerView is embedded in scrollView.

Every page has a different Controller, in this case "SearchViewController". The containerView contains the UIView "selectView" that belongs to "SearchViewController". See below:

let scrollView: UIScrollView = UIScrollView()
let containerView: UIView = UIView()

//SCROLLVIEW
scrollView.frame =  CGRectMake(0, 0, view.frame.width, view.frame.height)
self.view.addSubview(scrollView)

//CONTAINERVIEW
containerView.frame = CGRectMake(menuWidth, 0, view.frame.width, view.frame.height)
containerView.backgroundColor = UIColor.whiteColor()
scrollView.addSubview(containerView)

let s: SearchViewController = SearchViewController()
s.setup(bannerHeight, containerViewWidth: containerView.frame.width, containerViewHeight: containerView.frame.height)

containerView.addSubview(s.selectView)


import UIKit

class SearchViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource {

    let selectView: UIView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    let table: UITableView = UITableView()
    var items: [String] = ["A", "B", "C"]
    var filteredItems = [String]()


    func setup(bannerHeight: CGFloat, containerViewWidth: CGFloat, containerViewHeight: CGFloat){
        //SELECT PAGE
        selectView.frame = CGRectMake(0, bannerHeight, containerViewWidth, containerViewHeight - bannerHeight)

        //UITABLEVIEW
        table.frame = CGRectMake(0, 0, selectView.frame.width, selectView.frame.height)
        table.delegate = self
        table.dataSource = self
        table.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
        selectView.addSubview(table)
    }


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

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        print("tableViewCOUNT")
        return self.items.count
    }

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

        let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell

        cell.textLabel!.text = items[indexPath.row]
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator

        return cell
    }
}

So now i have this hierarchy: ScrollView<-containerView<-selectView<-table

The problem is that no data appear! In output I can see "tableViewCOUNT" but never "tableViewMAIN" and except for the empty rows there are no data.

Could somebody help me to understand why? Am I using the correct way? I would like to have a mainController and for every page a subController, then I will embed the page I need inside the containerView (like an iframe in html).

Thank you in advance!

Try calling

table.reloadData()

in the setup.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM