I have been in circles for a while, and nothing I found in related posts seems to solve the problem. I programmatically add a table to a custom UIView. The text of the table and row is displayed correctly, but none of them called SelectRowAtIndexPath and does not light up during the launch of this simulator when trying to click on any of the rows.
The relevant bits of my code are below:
import UIKit import AVFoundation @IBDesignable class PerformanceQuestionView: UIView, UITableViewDelegate, UITableViewDataSource { var optionsTable = UITableView(frame: CGRectMake(10,200,250,200)) var optionItems = ["One", "Two", "Three", "Four"] convenience init(rect: CGRect, performanceQuestion:PerformanceQuestion?) { self.init(frame: rect) NSLog("PerformanceQuestionView.init()") self.optionsTable.dataSource = self self.optionsTable.delegate = self self.optionsTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") self.optionsTable.allowsSelection = true } func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { NSLog("numberOfRowsInSection") return optionItems.count } func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { NSLog("cellForRowAtIndexPath") var cell:UITableViewCell = self.optionsTable.dequeueReusableCellWithIdentifier("cell") as UITableViewCell cell.textLabel.text = self.optionItems[indexPath.row] return cell } func tableView(tableView: UITableView!, willSelectRowAtIndexPath indexPath: NSIndexPath!) -> NSIndexPath! { NSLog("You will select cell #\(indexPath.row)!") return indexPath } func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { NSLog("You selected cell #\(indexPath.row)!") } override func layoutSubviews() { super.layoutSubviews() self.addSubview(optionsTable) } }
source share