【问题标题】:UITableView with xib(nib) file User-Interface带有 xib(nib) 文件用户界面的 UITableView
【发布时间】:2016-03-26 10:41:49
【问题描述】:

我想在 xib 文件中创建一个 UITableView,所以我有一个自定义警报(简单警报),并且有自定义视图,它们在 xib 中。所以我在 xib 文件的视图中创建了一个 UITableView,但问题是我显示警报并且它没有显示任何数据。我是 xib.files 的新手,所以我不知道我做错了什么。它对 xib.files 很陌生,因为当我在视图中添加一个按钮时,我会在点击时打印一个文本,它会打印任何东西,所以按钮没有反应。 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")
}

}

感谢您的帮助:)

【问题讨论】:

  • 你是否为 UITableview 设置了委托?
  • 是的,从 TableView 到文件所有者、委托和数据源。
  • 所以您的表格视图显示在警报中,但其中没有显示数据?还有你在用“subView”做什么,你以编程方式和通过 IBOutlet 创建它
  • 当然,警报中有一个Cutomview,其中有一个tableview,他显示tableview,但没有显示其中的数据,所以项目。我需要子视图来初始化 xib 的视图。
  • 这是 IBOutlet 的问题??我只知道将它与 xib.file 连接起来。

标签: swift uitableview xib


【解决方案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")!

如果会崩溃,请保持单元标识符名称相同

【讨论】:

  • 我已经尝试了所有 2 个函数,但它在 tableview 中没有显示任何数据。可能是此代码let AlertTableView = SimpleAlert.Controller(view: AlertView.view, style: .Alert) 中的警报问题,以便它调用控制器而不是其中的数据??
  • 我没有 SimpleAlert 的代码,所以我无法确定,但如果是问题,您可以检查正常的警报
  • 好的,但是到目前为止,这段代码必须为带有 xib 的 UITableView 还是好的,或者是 xib.file 与情节提要不同的东西?
  • tableview 看起来没问题,您可以通过为单元格提供背景颜色来检查单元格背景颜色是否显示,甚至单元格不显示,如果您熟悉情节提要,您面临什么问题通过故事板制作这个?
  • 好吧,故事板更友好,所以我尝试了故事板。感谢您的帮助:)
猜你喜欢
  • 2010-12-30
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多