100*_*ols 3 cocoa-touch delegates uitableview ios swift
我试图让UITableViewCell在点击特定单元格时显示有关特定单元格的更多内容.一旦细胞膨胀并再次敲击,细胞应缩小回原始大小.
我敢肯定有东西要与代表们做了heightForRowAtIndexPath和didSelectRowAtIndexPath,但我不知道如何使用didSelectRowAtIndexPath方法来选择特定的表格单元格一行.
// Height of table cell rows
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 45
}
//On cell tap, expand
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.rowHeight = 75;
}
Run Code Online (Sandbox Code Playgroud)
此外,是否可以隐藏从父单元溢出的任何内容?有点像溢出:隐藏; 在CSS中.
Jog*_*Com 13
在didSelectRowAtIndexPath中选择的tableview上声明一个全局变量NSInteger类型和存储行,并在此处重新加载.在heightForRowAtIndexPath中检查行并在那里增加高度.试试这样
var selectedIndex : NSInteger! = -1 //Delecre this global
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath.row == selectedIndex{
selectedIndex = -1
}else{
selectedIndex = indexPath.row
}
tableView.reloadData()
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == selectedIndex
{
return 75
}else{
return 45
}
}
Run Code Online (Sandbox Code Playgroud)
您要做的是将所选单元格的索引保存在didSelectRow方法中。并且还必须开始/结束表视图上的更新。这将重新加载tableview的某些部分。并调用heightForRow方法。在该方法中,您可以检查是否选中了该行,然后返回expandedHeight,否则返回正常高度
行高:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if self.selectedSortingRow == indexPath.row {
return ExpandedRowHeight
}
else{
return normalHeight
}
}
Run Code Online (Sandbox Code Playgroud)
在didSelect行中:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.beginUpdates()
selectedSortingRow = (int) indexPath.row
self.tableView.endUpdates()
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特 4 回答与推荐评论。无需创建新变量,tableView 保存了 selectedRow indexPath 的值。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.tableView.indexPathForSelectedRow?.row == indexPath.row {
return 75;
} else {
return 45;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7124 次 |
| 最近记录: |