【发布时间】:2017-01-15 07:35:26
【问题描述】:
我真的找不到一个教程来告诉我如何构建一个使用静态单元格的应用程序;带有可点击的单元格。基于几个过时的发布和object-c答案,我把一些东西放在一起。我的问题是,当我点击一个单元格时,我得到 staticDemoTableCell is has no member present.
我在 UIViewController 中嵌入了一个表格控制器。对于那个单元格(目前只有一个),我创建了一个类:
class staticDemoTableCell: UITableViewCell, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func awakeFromNib() {
[...]
tableView.delegate = self
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("clicked") // Works when the cell is clicked
// self.present() do not work. I need to present another viewcontroller when this cell is clicked
}
}
有些地方不对,因为每个单元格都是一个类?
我真的需要知道我这样做是否正确。我真正想要的更多是这样的。您是否看到过 ie:分组交易星期一:列表,星期二:列表等。每个单元格都可以单击,就像您的 iOS 设备的设置一样。任何指点将不胜感激。
【问题讨论】:
-
单元格通常不是
UITableViewDelegate(因为您有多个单元格,但表格视图只能有一个委托)。通常,视图控制器将是(并且仅当您相应地设置表视图的delegate时才会如此)。 -
@Rob 谢谢。
-
"有些地方不对,因为每个单元格都是一个类?"如果从下面的答案(以及我在上面的评论)中不清楚,不,您不需要(也不希望,很可能)为单元格设置不同的类。事实上,您根本不需要
UITableViewCell子类。对于动态单元格来说确实很强大,但是对于静态表来说就完全没必要了。 -
@Rob 想想你 iOS 设备的设置部分(应用程序),那不是静态单元格吗?当你点击一个单元格时,你会得到不同的 VC。请原谅我的问题,我刚开始学习,发现在问这些问题之前很难找到教程。
-
关于如何从点击静态单元格过渡到下一个场景,如果每个单元格都将您带到不同的场景,那么在 IB 中使用从单元格到各种不同场景的转场会更容易。您可以通过更少的编程获得您的 UI。但是,如果你有十几个静态单元可以将你带到同一个“下一个场景”,那么与其让来自不同单元的十几个 segue 到同一个下一个场景,我会改为对下一个场景有一个 segue,然后让
didSelect以编程方式为所有相关的自定义单元格执行单一的转场。
标签: swift uitableview swift3 tableviewcell