UITableView无法加载数据

时间:2017-06-30 07:24:09

标签: ios swift xcode uitableview

我的数据未加载到我的UITableView中,我不知道为什么,据我所知,我已经完成了本书的所有内容。

我在故事板中创建了TableViewTableViewCell,添加了图片和三个标签。

结构是:ViewController> TableView> TableViewCell> Image,标签

  • 我的主VC已连接到其ViewController.class
  • 我的TableViewCell已与其TableViewCell.class
  • 相关联
  • 我有一个识别器并将其链接起来,按照下面的代码
  • 我将所有商店连接起来

由于我未在输出屏幕中输入任何内容,它甚至没有加载我的NIB

import UIKit

class MyCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var cellTitle: UILabel!
@IBOutlet weak var cellDate: UILabel!
@IBOutlet weak var cellDescription: UILabel!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var cellImage: UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()

    print ("Did Load")

    tableView.delegate = self
    tableView.dataSource = self

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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 7
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "myCellID", for: indexPath)
    return cell

}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 70
}

}

5 个答案:

答案 0 :(得分:1)

import UIKit

class MyCell: UITableViewCell{ //<-- make sure your cell has this class and connect the outlets

@IBOutlet weak var cellTitle: UILabel!
@IBOutlet weak var cellDate: UILabel!
@IBOutlet weak var cellDescription: UILabel!
@IBOutlet weak var tableView: UITableView! //<-- what is this doing here?? remove this
@IBOutlet weak var cellImage: UIImageView!

}

class myViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

class Cell{
let title: String
//do this for every UIView in your cell
init(title: String //continue...){
self.title = title
//continue
}
}
var cells = [Cell]()

@IBOutlet weak var myTableView //<-- set here the outlet
override func viewDidLoad() {

    print ("Did Load")
    cells.append(Cell(//initialize))
    myTableView.delegate = self
    myTableView.dataSource = self
    myTableView.reloadData()

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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 7
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "myCellID", for: indexPath) as! MyCell //<-- ADDED
    cell.cellTitle = cells[indexPath.row].title
    //continue
    return cell

}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 70
}

答案 1 :(得分:1)

tableview的所有委托和数据源方法 ** [** func numberOfSections(在tableView:UITableView中) - &gt; Int,

func tableView(_ tableView:UITableView,numberOfRowsInSection section:Int) - &gt; Int,

func tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath) - &gt; UITableViewCell,

func tableView(_ tableView:UITableView,heightForRowAt indexPath:IndexPath) - &gt; CGFloat的**] **

必须在viewcontroller中,而不是在tableviewcell中。

答案 2 :(得分:1)

设置委托和数据源应该在视图控制器中。 tableView出口以及所有委托和数据源方法也应该位于视图控制器中。尝试在您的单元类中创建一个配置单元格方法,您可以在其中设置要用于更新单元格内容视图中的UI对象的数据,并创建单元格类型转换为您的自定义类 - 在行的单元格中视图控制器类中的方法。

答案 3 :(得分:0)

class is MyCell : UITableViewCell

但你说Structure是:ViewController&gt; TableView&gt; TableViewCell&gt;图片,标签。

你应该在ViewController中添加tableview。

答案 4 :(得分:0)

您需要将table cell class或nib注册到tableview。验证您是否已完成此操作。