自定义表格单元格不显示任何内容 - Swift 2

Posted

技术标签:

【中文标题】自定义表格单元格不显示任何内容 - Swift 2【英文标题】:Custom Table Cell doesn't show any content- Swift 2 【发布时间】:2015-11-08 08:34:46 【问题描述】:

我正在尝试在我的应用程序的注释上按下按钮时显示自定义表格视图单元格。当我按下按钮时,会出现一个空单元格,我不知道它有什么问题。你有什么建议? 提前致谢

类 ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate, UIPopoverPresentationControllerDelegate,UITableViewDataSource, UITableViewDelegate

struct MyData 
    var imagy:UIImage
    var title:String
    var details:String


var tableData: [MyData] = []

@IBOutlet weak var mapView: MKMapView!

let locationManager = CLLocationManager()

var mapItemData:MKMapItem!

let textCellIdentifier = "TextCell"


//TableViewDataSource functions
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return tableData.count


func numberOfSectionsInTableView(tableView: UITableView) -> Int return 1 




func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    // Create a new cell with the reuse identifier of our prototype cell
    // as our custom table cell class
    let cell = tableView.dequeueReusableCellWithIdentifier("TableViewCell") as! TableViewController
    // Set the first row text label to the firstRowLabel data in our current array item
    cell.imagy.image = tableData[indexPath.row].imagy
    // Set the second row text label to the secondRowLabel data in our current array item
    cell.title.text = tableData[indexPath.row].title
    // Set the second row text label to the secondRowLabel data in our current array item
    cell.details.text = tableData[indexPath.row].details
    // Return our new cell for display

    tableView.delegate = self
    tableView.dataSource = self

    return cell




 override func prepareForSegue(segue: UIStoryboardSegue,
    sender: AnyObject?)
        // Set any data to be shown on the table view here


var picture:[UIImage] = [
    UIImage(named: "pic1.jpg")!,
    //UIImage(named: "pic2.jpg")!,
    //UIImage(named: "pic3.jpg")!,
    //UIImage(named: "pic4.jpg")!,
   // UIImage(named: "pic5.jpg")!,
   // UIImage(named: "pic6.jpg")!,
    //UIImage(named: "pic7.jpg")!,
    UIImage(named: "pic8.jpg")!,    ]

override func viewDidLoad() 
    super.viewDidLoad()

这是 TableView 类:

类 TableViewController: UITableViewCell

@IBOutlet weak var imagy: UIImageView!


@IBOutlet weak var title: UILabel!


@IBOutlet weak var details: UILabel!

@IBOutlet weak var exit: UIButton!

override func awakeFromNib() 
    super.awakeFromNib()
    // Initialization code


override func setSelected(selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state

【问题讨论】:

【参考方案1】:

cellForRowAtIndexPath 仅在您的 tableView.dataSource 已设置时调用。你这样说:

tableView.delegate = self
tableView.dataSource = self

cellForRowAtIndexPath,所以当然你的桌子上什么都没有。就像你把钥匙放在房子里然后关上门一样。请将它们放在viewDidLoad 中。

【讨论】:

感谢您的回复。问题是,当我将它们放入 viewdidload 时,我收到一个错误“Ambiguous use of tableview numberofrowsinsection” 您是否为表格视图创建了正确的IBOutlet 就像您创建时一样:@IBOutlet weak var imagy: UIImageView!。你有没有这样的:@IBOutlet weak var tableView: UITableView! 我意识到您所说的 IBOutlet 是什么意思,并且我知道如何为图像和标题创建插座,但我没有用于 tableView 的插座。我现在刚刚创建了一个,它可以编译,但是我在 tableview.datasource = self 上得到了一个错误的执行 嗯,我认为仅写“@IBOutlet ....”是不够的,您必须以某种方式手动链接它,这可能是导致执行不良的原因

以上是关于自定义表格单元格不显示任何内容 - Swift 2的主要内容,如果未能解决你的问题,请参考以下文章

自定义表格单元格不符合 NilLiteralConvertible Swift Xcode 6 Beta 5

搜索自定义表格视图单元格不起作用并返回 nil

UITableView 自定义单元格不显示数据

UICollectionView 两个具有相同视图的单元格。第二个单元格不显示任何内容

延迟加载 - UITableview 可见单元格不显示图像

UICollectionView 显示为空白 - 单元格不显示