我正准备一张桌子,当我刷一下细胞时,我需要得到两个圆形按钮。每个按钮应该有一个图像和一个标签。
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
var hello = UITableViewRowAction(style: .Default, title: "Image") { (action, indexPath) in
// do some action
if let buttonImage = UIImage(named: "Image") {
// self.bgColor = UIColor.imageWithBackgroundColor(image: buttonImage, bgColor: UIColor.blueColor())
}
return editButtonItem()
}
答案 0 :(得分:0)
首先,您的代码存在一些问题:
editButtonItem()
方法的结果,该方法基本上会丢弃您的hello
操作。我会从它的名字中假设,这个方法返回了一个动作,而不是你想要的两个动作。self
上设置背景。阻止从父作用域捕获变量,因此此块中的self
与hello
操作无关,而是与实现editActionsForRowAtIndexPath
方法的类相关。如何实现您的需求(带标题和图像的两个按钮):
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
var firstAction = UITableViewRowAction(style: .Default, title: "First") { (action, indexPath) in
// action handler code here
// this code will be run only and if the user presses the button
// The input parameters to this are the action itself, and indexPath so that you know in which row the action was clicked
}
var secondAction = UITableViewRowAction(style: .Default, title: "Second") { (action, indexPath) in
// action handler code here
}
firstAction.backgroundColor = UIColor(patternImage: UIImage(named: "firstImageName")!)
secondAction.backgroundColor = UIColor(patternImage: UIImage(named:"secondImageName")!)
return [firstAction, secondAction]
}
我们创建两个单独的动作,分配它们的背景颜色以使用模式图像并返回包含我们的动作的数组。这是改变UITableViewRowAction
外观的最佳方法 - 我们可以看到from the docs,此类不会从UIView
继承。
如果您想更多地自定义外观,您应该寻找外部库或从头开始实施您自己的解决方案。