我实际上找不到一个教程,告诉我如何构建一个使用静态单元格的应用程序;可点击的单元格。根据几个过时的发布和对象c答案,我把一些东西放在一起。我的问题是,当我点击一个单元格时,我得到staticDemoTableCell
没有成员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设备的设置一样。任何指示都将非常感激。
答案 0 :(得分:9)
所以你可以做到以下几点。设置表格视图,然后将单元格设置为静态,一旦完成,您需要确保知道将要有多少部分。这取决于您的设计或您想要实现的目标。
然后你可以这样做:
如果您有多个部分,并且部分1有多个单元格。第2节只有一个单元格。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.section {
case 1:
switch indexPath.row {
case 0:
// Do something
case 1:
// Do something
default:
break
}
case 2:
// Do something
default:
break
}
}
如果您只有一个包含两个单元格的部分,则可以执行以下操作:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
// Do something
case 1:
// Do something
default:
break
}
}
我希望这有助于解决您的问题。祝你好运
答案 1 :(得分:8)
如果表格视图包含仅静态单元格,则会更容易:
TO date
设置为Content
Static Cells
和IBOutlet
并连接它们。答案 2 :(得分:0)
对于不同部分中的行,您可以通过示例对3个部分进行以下操作。第1节有1行,第2节有6行,第3节有3行:
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0:
return 1
case 1:
return 6
case 2:
return 3
default:
return 0
}
}