首页 > 系统 > iOS > 正文

iOS8使用UITableViewRowAction自定义UITableView左划样式

2019-11-09 15:59:58
字体:
来源:转载
供稿:网友

iOS 8之前使用如下方式自定义UITableView左划后显示的文字,不过该样式太单一了,而且只能显示一个:

- (nullable NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED;

而从iOS 8开始UITableView的协议UITableViewDelegate增加了如下方法,可以自定义左划后显示多个,样式也有更多选择了:

- (nullable NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED;

实现该代理方法后,以下的这个代理方法就不执行了:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;

UITableViewRowAction的定义如下:

NS_CLASS_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED @interface UITableViewRowAction : NSObject <NSCopying>+ (instancetype)rowActionWithStyle:(UITableViewRowActionStyle)style title:(nullable NSString *)title handler:(void (^)(UITableViewRowAction *action, NSIndexPath *indexPath))handler;

@property (nonatomic, readonly) UITableViewRowActionStyle style;@property (nonatomic, copy, nullable) NSString *title;@property (nonatomic, copy, nullable) UIColor *backgroundColor; // default background color is dependent on style@property (nonatomic, copy, nullable) UIVisualEffect* backgroundEffect;@end

typedef NS_ENUM(NSInteger, UITableViewRowActionStyle) {    UITableViewRowActionStyleDefault = 0,    UITableViewRowActionStyleDestructive = UITableViewRowActionStyleDefault,    UITableViewRowActionStyleNormal} NS_ENUM_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED;

其中不修改backgroundColor时,backgroundColor的颜色是由style决定的,UITableViewRowActionStyleDestructive时是红色的删除样式,UITableViewRowActionStyleNormal时是灰色样式,类似于微信好友列表左划后的“备注”。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表