简体   繁体   中英

Custom Table Cell doesn't show any content- Swift 2

I am trying to make a custom table view cell to appear when I press a button on an annotation on my app. When I press the button, an empty cell appears and I can't find out what's wrong about it. What do you suggest? thanks in advance

class 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()

And this is the TableView Class:

class 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
}

}

cellForRowAtIndexPath is called only when your tableView.dataSource is already set. You put this:

tableView.delegate = self
tableView.dataSource = self

in cellForRowAtIndexPath so of course there's nothing in your table. It's like you put your key in the house then close the door. Put them in viewDidLoad instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM