2014-11-02 74 views
1

谁能帮我下一个问题:斯威夫特如何UITableView的自定义的UITableView类添加到UIViewController的

我试图把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我把UIViewUIViewController。但应用程序已崩溃与例外

set { 
       self.delegate = newValue 
      } 

有人知道我做错了什么?

+0

你为什么重写委托?它没有做任何不同的事情。 – Abizern 2014-11-02 19:13:39

+0

你说得对。看起来它没有做任何事情。我只是想检查当我尝试设置委托时发生了什么,因为没有它,我didSelectRowAtIndexPath不会被调用。好像ViewController不知道CustomTableView,我想知道为什么 – 2014-11-02 19:38:53

+0

如果你发布了实际的崩溃日志,它会有所帮助。 – Abizern 2014-11-02 19:46:31

回答

0

self.delegate = newValue正在调用它的setter;这再次称其为二传手。这是一个无限循环。

这可以是您的问题的一种方法: 1.添加一个uitableview作为viewcontroller视图的子视图。 2.将viewcontroller设置为tableview的数据源和委托。 3.然后你可以根据你的需要自定义tableview。

+0

你是对的,这是一个无限循环。所以我重新写了这样的“委托= newValue!”。这必须工作(或不?)。但我有和以前一样的问题。 第二。我无法将UITableView设置为ViewController的子视图,因为我需要一个带有静态单元的UITableView,并且它在UIVIewController上是不可变的。所以,我把UIView放在我的ViewController上,并从UITableView继承它。 – 2014-11-02 20:53:08

相关问题