【发布时间】:2014-11-02 19:08:57
【问题描述】:
谁能帮我解决下一个问题:
我试图将UIView(从UITableView 子类化)到UIViewController 的下一个方式:
class CustomTableView: UITableView, UITableVIewDelegate {
override var delegate: UITableViewDelegate? {
get {
return self.delegate
}
set {
self.delegate = newValue
}
}
}
class ViewController: UIViewController, UITableVIewDelegate {
@IBOutlet weak var tableView: CustomTableView
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
}
func tableView(tableView: UITableView. didSelectRowAtIndexPath indexPath: NSIndexPath) {
//Not called
}
}
在 IB 中,我将UIView 放在UIViewController 上。但是应用程序在
set {
self.delegate = newValue
}
有人知道我做错了什么吗?
【问题讨论】:
-
你为什么要覆盖委托?它没有做任何不同的事情。
-
你是对的。好像什么都没做。我只想检查当我尝试设置委托时发生了什么,因为没有它我的 didSelectRowAtIndexPath 不会被调用。好像 ViewController 不知道 CustomTableView,我想知道为什么
-
如果您发布实际的崩溃日志会有所帮助。
-
似乎应用程序刚刚进入“self.delegate = newValue”行的无限循环并且没有给我任何错误日志。现在我想这只是在 UIViewController 上添加 UITableView 的一种不好的方法,或者我需要为它实现一些自定义委托。但我不确定最后一个。
-
不是
self.delegate = newValue触发了setter,它触发了self.delegate = newValue等?这看起来像一个无限循环
标签: ios uitableview uiview swift