Voici le dilemme: Je veux créer une editingAccessoryView
personnaliséeAccessoryView qui contient deux buttons pour mon stock UITableViewCell
. J'aimerais y parvenir en utilisant un storyboard. Jusqu'à présent, j'ai suivi les étapes décrites ici , ici et ici . Je n'arrive juste pas à le faire fonctionner. Le plus proche était quand j'ai créé un xib de type UIView
, définissez la class à celle de mon UIViewController
qui contient le UITableView
et lié à mon IBOutlet
, mais sur cellForRowAtIndexPath
c'est nil
.
La vérité est, je pense que j'ai juste besoin de savoir comment créer la vue et ensuite le mapper à l' editAccessoryView
; à partir de là, je crois que je peux comprendre comment append des buttons et mapper l' IBAction
correspondant. Quelqu'un peut-il fournir des instructions étape par étape ou des liens vers des tutoriels?
J'ai résolu cela par moi-même avec le code suivant:
UIView *editingCategoryAccessoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 35)]; UIButton *addCategoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [addCategoryButton setTitle:@"Add" forState:UIControlStateNormal]; [addCategoryButton setFrame:CGRectMake(0, 0, 50, 35)]; [addCategoryButton addTarget:self action:@selector(addCategoryClicked:withEvent:) forControlEvents:UIControlEventTouchUpInside]; UIButton *removeCategoryButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [removeCategoryButton setTitle:@"Remove" forState:UIControlStateNormal]; [removeCategoryButton setFrame:CGRectMake(55, 0, 65, 35)]; [removeCategoryButton addTarget:self action:@selector(removeCategoryClicked:withEvent:) forControlEvents:UIControlEventTouchUpInside]; [editingCategoryAccessoryView addSubview:addCategoryButton]; [editingCategoryAccessoryView addSubview:removeCategoryButton]; cell.editingAccessoryView = editingCategoryAccessoryView;
Comme vous pouvez le voir, j'ai créé un nouveau UIView
programme et ajouté deux buttons via addSubview
, puis l' addSubview
assigné à l' editingAccessoryView
.
Je sais que c'est probablement trop tard pour vous aider, mais c'est beaucoup mieux que la solution que vous avez trouvée. iOS vous donne une méthode nommée tableView: editActionsForRowAtIndexPath indexPath:
Cette méthode vous permet essentiellement d'append votre propre UITableViewRowActions, ce qui est beaucoup plus facile (et plus propre) que d'append un UIView entier avec UIButtons.
Apple dit:
Utilisez cette méthode lorsque vous souhaitez fournir des actions personnalisées pour l'une de vos lignes de table. Lorsque l'user balaie horizontalement dans une rangée, la vue de la table déplace le contenu de la ligne de côté pour révéler vos actions. Appuyez sur l'un des buttons d'action pour exécuter le bloc gestionnaire stocké avec l'object action.
Si vous n'implémentez pas cette méthode, la vue de table affiche les buttons d'accessoire standard lorsque l'user passe la ligne.
Vous pouvez consulter la documentation Apple vous-même, si vous le souhaitez.
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? { let customAction = UITableViewRowAction(style: .Normal, title: "Your Custom Action", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in println("Do whatever it is you want to do when they press your custom action button") }) editAction.backgroundColor = UIColor.greenColor() let deleteAction = UITableViewRowAction(style: .Normal, title: "Delete", handler: { (action: UITableViewRowAction!, indexPath: NSIndexPath!) in println("You can even implement a deletion action here") }) deleteAction.backgroundColor = UIColor.redColor() return [deleteAction, editAction] }