嵌入在UIView中的UITableView,空行

时间:2016-01-30 19:14:23

标签: ios iphone uitableview uiview

我正在开发一个新应用程序,但我遇到了一些问题:

我正在以编程方式开发所有内容,因此我为所有页面创建了一个SCROLLVIEW和一个CONTAINERVIEW。 containerView嵌入在scrollView中。

每个页面都有一个不同的Controller,在本例中为“SearchViewController”。 containerView包含属于“SearchViewController”的UIView“selectView”。见下文:

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

所以现在我有了这个层次结构:ScrollView< -containerView< -selectView< -table

问题是没有数据出现!在输出中,我可以看到“tableViewCOUNT”,但从不“tableViewMAIN”,除了空行,没有数据。

有人可以帮助我理解为什么吗? 我用的是正确的方法吗?我想有一个mainController,每个页面都有一个subController,然后我会在containerView中嵌入我需要的页面(就像html中的iframe)。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试拨打

table.reloadData()

在设置中。