一尘不染

标题的UITableViewRowAction图像

swift

我做了一个自定义的UITableViewRowAction。现在,我想添加图像而不是文本。我知道这是可能的,但不知道该怎么做。你们中有人知道如何在Swift中做到这一点,并想帮助我吗?感谢您的回答!


阅读 265

收藏
2020-07-07

共1个答案

一尘不染

iOS 11.0

迅速

苹果公司引入了灵活的方式来声明行操作,从而带来了巨大的好处。

extension ViewController: UITableViewDelegate {
  func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let askAction = UIContextualAction(style: .normal, title: nil) { action, view, complete in
      print("Ask!")
      complete(true)
    }

    // here set your image and background color
    askAction.image = IMAGE
    askAction.backgroundColor = .darkGray

    let blockAction = UIContextualAction(style: .destructive, title: "Block") { action, view, complete in
      print("Block")
      complete(true)
    }

    return UISwipeActionsConfiguration(actions: [blockAction, askAction])
  }

  func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.textLabel?.text = "row: \(indexPath.row)"
  }
}

例:

在此处输入图片说明

iOS 8.0

您需要将UIImage设置为行操作的backgroundColor,具体来说是:

迅速:

UIColor(patternImage: UIImage(named: "IMAGE_NAME"))

目标C:

[UIColor colorWithPatternImage:[UIImage imageNamed:@"IMAGE_NAME"]];
2020-07-07