我想在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")
}
}
感谢您的帮助:)
答案 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")!
如果崩溃,请保持小区标识符名称相同