43 votes

Changer l'icône par défaut pour déplacer des cellules dans UITableView

J'ai besoin de changer l'icône par défaut pour déplacer les cellules dans UITableView.

Celui-là:

entrez la description de l'image ici

C'est possible?

10voto

Rapide 4

    // Change default icon (hamburger) for moving cells in UITableView
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        let imageView = cell.subviews.first(where: { $0.description.contains("Reorder") })?.subviews.first(where: { $0 is UIImageView }) as? UIImageView

        imageView?.image = #imageLiteral(resourceName: "new_hamburger_icon") // give here your's new image
        imageView?.contentMode = .center

        imageView?.frame.size.width = cell.bounds.height
        imageView?.frame.size.height = cell.bounds.height
    }

7voto

Andrey Gordeev Points 6348

Version rapide de la réponse de Rick avec quelques améliorations:

 override func setEditing(editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)

    if editing {
        if let reorderView = findReorderViewInView(self), 
            imageView = reorderView.subviews.filter({ $0 is UIImageView }).first as? UIImageView {
            imageView.image = UIImage(named: "yourImage")
        }
    }
}

func findReorderViewInView(view: UIView) -> UIView? {
    for subview in view.subviews {
        if String(subview).rangeOfString("Reorder") != nil {
            return subview
        }
        else {
            findReorderViewInView(subview)
        }
    }
    return nil
}

4voto

Hubert Wang Points 369

J'utilise editAccessoryView pour remplacer l'icône de réorganisation.

  1. Créez une sous-classe de UITableViewCell.
  2. Remplacez setEditing. Masquez simplement le contrôle de réorganisation et définissez editAccessoryView sur un uiimageview avec votre image de réorganisation.
  - (void) setEditing:(BOOL)editing animated:(BOOL)animated
{

    [super setEditing: editing animated: YES];

    self.showsReorderControl = NO;

    self.editingAccessoryView = editing ? [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourReorderIcon"]] : nil;

}

Si vous n'utilisez pas la vue accessoire d'édition, cela peut être un bon choix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X