表格视图显示在屏幕下方

时间:2016-01-28 05:34:25

标签: ios swift uitableview

我的问题是我的TableView中的最后一个单元格位于屏幕视图下方,要查看它,您必须向上滚动并保持您的位置。在你不向上滚动的中立位置,你无法看到最后一个单元格。在改变细胞大小之前,一切似乎都很好。这是我的代码:

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

//MARK : Properties
var tableView = UITableView()
var items: [String] = ["Age", "Gender", "Smoking Hx", "Occup. -Ag", "Family Hx", "Chronic Lung Disease Radiology", "Chronic Lung Disease Hx", "Nodule Border", "Nodule Location", "Satellite Lesions", "Nodule Pattern Cavity", "Nodule Size"]
var navigationBar = NavigationBar()
var gender = GenderView()

override func viewDidLoad() {
    super.viewDidLoad()

    //Create TableView
    tableView.frame = CGRectMake(0, self.view.bounds.height * 0.097, self.view.bounds.width, self.view.bounds.height);
    tableView.delegate = self
    tableView.dataSource = self
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    self.view.addSubview(tableView)



    //Create Navigation Bar with custom class
    self.navigationBar = NavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height * 0.097))
    self.view.addSubview(navigationBar)

}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}




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


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

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

    cell.textLabel?.text = self.items[indexPath.row]

    //Cell wont turn grey when selected
    cell.selectionStyle = UITableViewCellSelectionStyle.None

    return cell

}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

 return self.view.bounds.height * 0.095

}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    print("You selected cell #\(indexPath.row)!")


}


}

我能想到的唯一导致这个问题的是,我没有创建导航栏,而是使用自定义UIView()类创建了一个“navigationBar”。然后我启动导航栏底部的表格视图。知道如何解决这个问题吗?

这是NavigationBar.swift:

class NavigationBar: UIView {

var navigationBar = UIView()
var header = UILabel()
var lineBorder = UIView()

override init(frame: CGRect) {
    super.init(frame: frame)
    self.frame = frame
    setUpView()
}

func setUpView(){


    //Create Navigation Bar
    navigationBar.frame = CGRectMake(0, 0, self.bounds.width, self.bounds.height)
    navigationBar.backgroundColor = UIColor.whiteColor()
    self.addSubview(navigationBar)

    //Create Line Border
    lineBorder.frame = CGRectMake(0, self.bounds.height, self.bounds.width, self.bounds.height * 0.005)
    lineBorder.backgroundColor = UIColor.grayColor()
    self.addSubview(lineBorder)


    header.frame = CGRectMake(0, 0, 200, 200)
    header.font = UIFont(name: "Helvetica", size: 17)
    header.text = "Nodule Risk Calculator"
    //header.backgroundColor = UIColor.blackColor()
    self.addSubview(header)
    header.translatesAutoresizingMaskIntoConstraints = false
    header.centerHorizontallyTo(navigationBar, padding: 0)
    header.centerVerticallyTo(navigationBar, padding: 9)

}


func hide(){
    self.removeFromSuperview()
}


required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

2 个答案:

答案 0 :(得分:0)

default

有问题。 origin.y不是0,你仍然可以提供整个高度。因此,表格视图将在屏幕下方有一些区域

试试这个:

tableView.frame = CGRectMake(0, self.view.bounds.height * 0.097, self.view.bounds.width, self.view.bounds.height);

答案 1 :(得分:0)

self.navigationBar = NavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height * 0.097))
self.view.addSubview(navigationBar)

var yAxis : Float = self.navigationBar.frame.height
var tblHeight : Float = self.view.bounds.height - yAxis

tableView.frame = CGRectMake(0, yAxis, self.view.bounds.width, tblHeight)
self.view.addSubview(tableView)
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")