我有一个ViewController使用此函数调用(单击按钮)另一个View
@IBAction func btnSeeContact(sender: AnyObject) {
self.performSegueWithIdentifier("segueSeeContact", sender: self)
}
我的原型单元是"链接"到我创建的名为ContactsTableViewCell的自定义视图控制器,它实现了:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! ContactsTableViewCell
cell.txtName.text = "test"
cell.txtPhone.text = "1234567890"
return cell
}
当我运行项目时,按钮调用表,但是没有Cell,我在这些tableView函数上放置了一个断点,但是没有到达它们。
我在这里想到的是,这些函数永远不会被调用?
答案 0 :(得分:2)
我正在添加一个新答案,因为我之前的答案已经过投票,因此我不想对其进行大量修改,而且仍然是解决问题的有效方式。
问题是您的自定义类很困惑。在屏幕截图中,您可以看到Table View Controller未设置为自定义类,只是说A
。这是需要获得UITableViewController类的自定义实现的对象。
相反,您似乎将单元格的类设置为自定义类,并在那里实现委托方法。您仍然需要表视图单元格的自定义类,但它应该是Table View Controller
的自定义类。
所以你的细胞类应该是这样的:
UITableViewCell
您将获得此单元格的实例以在cellForIndexPath中进行配置。 因此,您的Table视图控制器类应设置为如下所示的类。你想要实现所有委托方法的YourTableViewController。
注意:如果您使用从故事板中拖出的UITableViewController,它将已经拥有tableView,并且已经为您配置了委托/数据源。您还会注意到您正在覆盖委托方法,因为UITableViewController类具有这些方法的默认实现。如果您只是使用普通视图控制器,请参阅我之前的答案,了解有关如何进行设置的详细信息。
import UIKit
class YourCustomTableViewCell: UITableViewCell {
@IBOutlet weak var yourLabel1: UILabel!
@IBOutlet weak var yourLabel2: UILabel!
}
答案 1 :(得分:1)
正如其他人所评论的,你真的需要提供更多的背景。
以下是可能出错的一些事情,提供更多背景会证实或否认这一猜测。
首先,您不要显示numberOfSectionsInTableView方法。
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 0
}
我认为您需要提供0以外的值
其次,由于我不确定在我确定你打算成为UITableViewDelegate方法函数调用的前面override
,这意味着你的视图控制器不是UITableViewController。这让我想知道你是否将这个视图控制器定义为符合UITableViewDelegate协议,并且如果你将表视图插座委托设置为self。 (或者甚至将UITableView连接到插座)
如果使用普通的UIViewController来托管表视图,则需要执行以下操作:
这样的事情:
class MyTableViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("your PrototypeCell", forIndexPath: indexPath)
// Configure the cell...
return cell
}
}