带有xib(nib)文件的UITableView用户界面

时间:2016-03-26 10:41:49

标签: swift uitableview xib

我想在xib文件中创建一个UITableView,所以我有一个自定义警报(简单警报),并且有自定义视图,它们在xib中。所以我在xib文件的视图中创建一个UITableView,但问题是我显示警报并且它没有显示任何数据。我是xib.files的新手,所以我不知道我做错了什么。 xib.files比较奇怪,因为当我在View中添加一个Button时,我会在tapped上打印一个文本,打印任何东西,所以Button没有反应。 BookTableView以及子视图和视图与文件所有者绑定。

有谁知道我错了什么? 谢谢你的帮助。

所以这是我使用自定义视图显示警报的代码:

    @IBAction func PlayTapped(sender: AnyObject) {


    let AlertView = TableViewAlertController(nibName: "TableViewAlertController", bundle: nil)

    let AlertTableView = SimpleAlert.Controller(view: AlertView.view, style: .Alert)

    showAlert(AlertTableView)
  }  

这里是ViewController中带有xib.file TableView的代码:

import UIKit
import SimpleAlert

class TableViewAlertController: UIViewController {


let items = ["item1", "item2", "item3", "item4"]


required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}

override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
    subView = UIView()
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

convenience init() {
    self.init(nibName: "TableViewAlertController", bundle: nil)
}


@IBOutlet var subView: UIView!
@IBOutlet var BookTableView: UITableView!



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

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return items.count
}

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

    let cell = UITableViewCell()

    cell.textLabel!.text = items[indexPath.row]


    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    print("Table Cell clicked")
}

}

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

请尝试像这样创建UITableViewCell

首先为tableview单元格注册一个类

tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "DefaultCell")

或者如果您为tableview单元格创建了xib

tableView.registerNib(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "DefaultCell")//same identifier as you have set in 'Reuse identifier' in the cell's xib

cellForRowAtIndexPath创建单元格:

let cell = tableView.dequeueReusableCellWithIdentifier("DefaultCell")!

如果崩溃,请保持小区标识符名称相同