Personnalisé modifier la vue en UITableViewCell tout balayez vers la gauche. Objective-C ou Swift
Comment faire un personnalisé modifier l'affichage dans iOS7 UITableView avec Objective-C comme Evernote ou sur l'Apple app Rappels tout en balayant vers la gauche.
J'ai essayé de mettre une custom editingAccessoryView, mais cela n'a pas fonctionné.
Evernote vue edit:
Des rappels de vue edit:
Mon code actuel est
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSLog(@"delete");
}
}
J'ai essayé de résoudre le problème: (UITableViewController.h)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//make cell
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[view setBackgroundColor:[UIColor greenColor]];
//add Buttons to view
cell.editingAccessoryView = view;
return cell;
}
Et la même chose avec: (UITableViewCell)
- (void)willTransitionToState:(UITableViewCellStateMask)state;
- (void)setEditing:(BOOL)editing animated:(BOOL)animated;
- (UIView*)editingAccessoryView;
Vous devez vous connecter pour publier un commentaire.
Il suffit de copier coller le code ci-dessous!
Swift 3
Swift 2.1
Remarque: pour iOS 8,
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { }
oueditActionsForRowAtIndexPath
ne sera pas appeléself
?Vous pouvez utiliser
UITableViewRowAction
'sbackgroundColor
à l'ensemble de personnaliser l'image ou de la vue. L'astuce est d'utiliserUIColor(patternImage:)
.Fondamentalement la largeur de
UITableViewRowAction
zone est décidé par son titre, de sorte que vous pouvez trouver une longueur exacte de titre(ou un espace) et de définir la taille exacte de l'image avecpatternImage
.Pour mettre en œuvre la présente, j'ai fait un
UIView
's de la méthode d'extension.et de faire une chaîne de caractères avec des espaces blancs et de la longueur exacte,
et maintenant, vous pouvez créer
UITableViewRowAction
.Le résultat ressemblera à ceci.
Une autre façon de le faire est d'importer des polices personnalisées qui a l'image que vous souhaitez utiliser en tant que police et l'utiliser
UIButton.appearance
. Cependant, cela va affecter les autres boutons, sauf si vous définissez manuellement sur un autre bouton de la police.De iOS 11, il affiche ce message
[TableView] Setting a pattern color as backgroundColor of UITableViewRowAction is no longer supported.
. Actuellement, il est encore à travailler, mais il ne fonctionnait pas dans la future mise à jour.deleteAction.backgroundColor = UIColor.init(patternImage: image)
devrait êtredeleteAction.backgroundColor = UIColor(patternImage: image)
. Réponse impressionnante siConsulter ce lien : https://github.com/TeehanLax/UITableViewCell-Swipe-for-Options
Et personnaliser votre uitableviewcell avec de multiples bouton.
J'ai mis en œuvre ce code de mon application a obtenu un tel résultat. Vous pouvez ajouter un numéro de bouton de balayage des cellules.
Mis en œuvre ici des captures d'écran
Vous Pouvez essayer ce,
Le code ci-dessus montre comment créer des boutons personnalisés lorsque votre glisser sur la ligne.
tableView(_, commit:, forRowAt:) { }
comme mentionné ci-dessusSi vous souhaitez uniquement utiliser du texte en faisant glisser les actions, alors vous pouvez utiliser l'iOS par défaut balayez les actions, mais si vous voulez que l'image et le texte, alors vous devez le personnaliser. J'ai trouvé un bon tutoriel et exemples qui peuvent résoudre ce problème.
Essayer ce référentiel pour obtenir la coutume balayez vers la cellule. Vous pouvez ajouter plusieurs option ici.
http://iosbucket.blogspot.in/2016/04/custom-swipe-table-view-cell_16.html
https://github.com/pradeep7may/PKSwipeTableViewCell
Cette charge à la fois le titre et l'image.
Pour iOS 11 et par la suite:
Aussi, la méthode similaire est disponible pour
leadingSwipeActions
Source:
https://developer.apple.com/videos/play/wwdc2017/201/ (Parle à environ 16 minutes de temps)
https://developer.apple.com/videos/play/wwdc2017/204/ (Parle à environ 23 minutes de temps)
Comme je le pense, Ce n'est pas la meilleure façon d'utiliser UIGestureRecognizer à base de cellules.
Tout d'abord, vous n'aurez pas toutes les options à utiliser CoreGraphics.
Solution parfaite, va UIResponder ou un
UIGestureRecognizer
pour l'ensemble de la table. Pas pour tous lesUITableViewCell
. Il vous permettra de vous app coincé.créer une vue sur la cellule personnalisé dans la vue de table et d'appliquer PanGestureRecognizer de la vue sur la cellule.Ajouter les boutons de la cellule personnalisé, lorsque vous faites glisser la vue sur la cellule personnalisé ensuite les boutons sur la cellule personnalisé sera visible.
Et de gérer l'panoramique sur le point de vue de la méthode