我在Swift中遇到UITableView问题。 只要我没有实现用于处理单元格选择的委托函数,它就可以正常工作。
这是我非常简单的类,它充当表视图委托和数据源:
import UIKit
class TableViewService : NSObject, UITableViewDataSource, UITableViewDelegate {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
if(indexPath.row == 0) {
cell.textLabel?.text = "One"
} else {
cell.textLabel?.text = "Two"
}
cell.selectionStyle = .None
return cell;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
log.debug("Row selceted")
}
}
当我在表视图中选择一行时,应用程序崩溃,并在objc_msgSend中出现EXEC_BAD_ACCESS错误 - 控制台中没有记录错误,如果我在didSelectRowAtIndexPath函数中放置了断点,则它永远不会被触发。
我缺少什么或做错了什么?
答案 0 :(得分:2)
以下是我创建项目时没有遇到任何问题的步骤。也许它会帮助你错过某个地方的一步?:
1)在故事板中设置UITableView
作为ViewController
2)将代码添加到ViewController
(您的自定义类)
class ViewController: UIViewController {
@IBOutlet var tableView:UITableView!
let tableService:TableViewService = TableViewService()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = tableService
tableView.dataSource = tableService
}
}
3)确保插座连接在ViewController
和tableView
4)从上面的代码中复制/粘贴TableViewService
课程(除了我使用的是println()
而不是log.debug
)
如果我确定这三件事,那么我就能看到委托方法被调用而没有崩溃。