我有一个UIViewController
,我把它TableView
:
我还在其中添加了UITableViewCell
,在故事板中检查了我的表视图是否具有动态生成的内容,并向UITableViewCell
添加了标识符“cell”。我将它连接到我班级的插座,然后我从UITableViewDelegate
:
class MapViewController: UIViewController, UITableViewDelegate, UITextViewDelegate {
@IBOutlet weak var myTableDetailsPanel: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
myTableDetailsPanel.delegate = self
}
然后我将自定义对象添加到我的数组中:
var items = NSMutableArray()
...
print("size of items before: \(items.count)")
items.addObject(myObject)
print("size of items after: \(items.count)")
myTableDetailsPanel.reloadData()
myTableDetailsPanel.hidden = false
我也有这种方法:
func tableView(myTableDetailsPanel: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = myTableDetailsPanel.dequeueReusableCellWithIdentifier("cell") as! MyDetailsCell
let yawp:MySingleObject = self.items[indexPath.row] as! MySingleObject
print("hello")
...
而且......我的问题是面板显示为空,在我看到的控制台中:
size of items before: 0
size of items after: 1
但不知怎的,我没有看到hello
。我cellForRowAtIndexPath
的代码永远不会运行。为什么这样?
答案 0 :(得分:3)
当您实施UITableViewDelegate
协议以通知您必须实现UITableViewDataSource
的UITableView
中的更改时,数据源会向表视图对象提供所需的信息构建和修改表视图。
因此,您需要实施UITableViewDataSource
协议,并将dataSource
声明为self
,如下所示:
myTableDetailsPanel.dataSource = self
我希望这对你有所帮助。