【问题标题】:Odd behaviour when using UITableView in a UIViewController that is presented Modally在模态显示的 UIViewController 中使用 UITableView 时的奇怪行为
【发布时间】:2015-08-24 01:33:44
【问题描述】:

UITableView 放入以模态(表单)形式呈现的UIViewController 时,我发现了一个奇怪的行为

由于编码错误而修复:由于某些原因,表格视图在每组中显示 2 组标签 仅设置 1 时的单元格。第一组显示原始标签 名称然后直接在顶部是编码文本。看 iPhone4s 屏幕 射击。

在 iPad 上,即使表格、单元格和 contentView 已设置为 clearColor,表格视图也是白色的。请参阅 iPad 屏幕截图。

iPad 屏幕截图:

iPhone 屏幕截图:

这是一个测试代码,用于查看我在主应用程序中的编码是否有错误。

class TestTableView:UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var testTable: UITableView!
var data = ["One", "Two", "Three"]

override func viewDidLoad() {
    super.viewDidLoad()
    self.testTable.delegate = self
    self.testTable.dataSource = self
}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("testCell", forIndexPath: indexPath) as! testTableCell
    cell.testTableCell!.text = self.data[indexPath.row]
    return cell
}
}

class testTableCell:UITableViewCell{

@IBOutlet weak var testTableCell: UILabel!

override func layoutSubviews() {
    super.layoutSubviews()
}
}

有趣的是 println(self.data.count) 打印了 4 次。

任何人都可以在我的代码中看到问题吗?或者这是一个错误?

任何反馈都会有所帮助..

【问题讨论】:

  • 你应该使用cell.testTableCell.text = xxx而不是cell.textLabel!.text = xxx
  • 在模拟器中运行应用程序时,点击代码编辑器下 Xcode 中的 Debug View Hierarchy 按钮。这将允许您分层查看界面。也许您有一个或多个重复的控件或其他东西......
  • @Bannings。错过这一点感到有点愚蠢。该死的自动完成功能挫败了我。哈哈。然而问题仍然存在,在 ipad 上,桌子的背景仍然是白色的。有什么想法吗?
  • 两个屏幕截图中的表格都比显示的视图窄得多。为什么?呈现的视图是什么? (紫色的东西……)显然不是桌子,那么实际呈现的是什么?您需要更多地解释这里的架构。您的信息太少,无法复制。
  • 正如我在描述中所说,视图以模态方式呈现(表单)。视图具有紫色背景,并且表格周围有很大的空白。测试在 iPad Air 上进行。然而,不透明的单元格似乎与它的模态无关。我在使用“show”时遇到了同样的问题。

标签: ios swift uitableview


【解决方案1】:

我已经解决了这个问题,但我不确定这是一个错误。由于某种原因,在 IB 中设置单元格的背景颜色在 iPad 上不起作用。

将单元格代码更改为此有效。

class testTableCell:UITableViewCell{

@IBOutlet weak var testTableCell: UILabel!

override func layoutSubviews() {
    super.layoutSubviews()
    self.backgroundColor = UIColor.clearColor()
}
}

没有其他人遇到过这个问题吗?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多