仅将 IBAction 应用于单个单元格
Apply an IBAction only to a single cell
我有一个带有原型单元格的 tableView;有了这个 func
我设置单元格高度
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
return cellHeight
}
使用此 action
我更改了 UIButton 内部的单元格高度
@IBAction func changeCellHeight(sender: UIButton)
{
if cellHeight == 44
{
cellHeight = 88
} else {
cellHeight = 44
}
tableView.beginUpdates()
tableView.endUpdates()
}
现在我只需要为选定的单元格(而不是每个单元格)更改高度;所以我定义
var index: NSIndexPath!
我实现了这个 func
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
index = self.tableView.indexPathForSelectedRow()!
println("Cella " + "\(index)")
}
正如我在控制台中预期的那样 Xcode 打印选定的单元格 (<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}
)。
所以我的麻烦是如何在IBAction
.
中使用var index
提前致谢。
要根据选择更改您的高度,如果您已经在实施 didSelectRowAtIndexPath
方法,则不需要 IBAction。
首先对您的 didSelectRowAtIndexPath
方法稍作改动-
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
// You don't need to do this -> index=self.tableView.indexPathForSelectedRow()!
index = indexPath;
println("Cella " + "\(index)")
tableView.beginUpdates()
tableView.endUpdates()
}
然后对您的 heightForRowAtIndexPath
方法稍作改动-
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if index == indexPath {
return 88
}
else{
return 44
}
}
我有一个带有原型单元格的 tableView;有了这个 func
我设置单元格高度
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
return cellHeight
}
使用此 action
我更改了 UIButton 内部的单元格高度
@IBAction func changeCellHeight(sender: UIButton)
{
if cellHeight == 44
{
cellHeight = 88
} else {
cellHeight = 44
}
tableView.beginUpdates()
tableView.endUpdates()
}
现在我只需要为选定的单元格(而不是每个单元格)更改高度;所以我定义
var index: NSIndexPath!
我实现了这个 func
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
index = self.tableView.indexPathForSelectedRow()!
println("Cella " + "\(index)")
}
正如我在控制台中预期的那样 Xcode 打印选定的单元格 (<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}
)。
所以我的麻烦是如何在IBAction
.
var index
提前致谢。
要根据选择更改您的高度,如果您已经在实施 didSelectRowAtIndexPath
方法,则不需要 IBAction。
首先对您的 didSelectRowAtIndexPath
方法稍作改动-
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
// You don't need to do this -> index=self.tableView.indexPathForSelectedRow()!
index = indexPath;
println("Cella " + "\(index)")
tableView.beginUpdates()
tableView.endUpdates()
}
然后对您的 heightForRowAtIndexPath
方法稍作改动-
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if index == indexPath {
return 88
}
else{
return 44
}
}