iOS UIKit框架学习—UITableViewCell

UITableViewCell类定义了在UITableView对象出现时每个单元格的属性和行为。该类包括设置和管理单元格内容和背景(包括文本、图像和自定义视图)的属性和方法,管理单元格的选择和突出状态,管理附件视图,以及启动单元格内容的编辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableViewCell : UIView <NSCoding, UIGestureRecognizerDelegate>
// 初始化设置风格,设置重用标识符
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier NS_AVAILABLE_IOS(3_0) NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
// 单元格中的图像视图(根据选择的方式视图位置会不同)
@property (nonatomic, readonly, strong, nullable) UIImageView *imageView NS_AVAILABLE_IOS(3_0);
// 文本主要内容标签
@property (nonatomic, readonly, strong, nullable) UILabel *textLabel NS_AVAILABLE_IOS(3_0);
// 详细内容的标签
@property (nonatomic, readonly, strong, nullable) UILabel *detailTextLabel NS_AVAILABLE_IOS(3_0);
// 单元格中的内容视图,可以添加自定义视图到内容视图上
@property (nonatomic, readonly, strong) UIView *contentView;
// 背景视图
@property (nonatomic, strong, nullable) UIView *backgroundView;
// 只用选中时才会显示的视图
@property (nonatomic, strong, nullable) UIView *selectedBackgroundView;
// 多重选择是的视图
@property (nonatomic, strong, nullable) UIView *multipleSelectionBackgroundView NS_AVAILABLE_IOS(5_0);
// 重用标识符
@property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier;
// 准备重用
- (void)prepareForReuse;
// 选中的风格
@property (nonatomic) UITableViewCellSelectionStyle selectionStyle;
// 时候可以选中
@property (nonatomic, getter=isSelected) BOOL selected; //default is NO.
// 是否可以高亮
@property (nonatomic, getter=isHighlighted) BOOL highlighted; // default is NO.
// 是否可以选中,是否带动画效果
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
// 是否可以高亮,是否带动画效果
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated;
// 编辑状态下单元格的风格
@property (nonatomic, readonly) UITableViewCellEditingStyle editingStyle;
// 是否重新排序
@property (nonatomic) BOOL showsReorderControl; // default is NO
// 编辑状态下单元格是否缩进
@property (nonatomic) BOOL shouldIndentWhileEditing; // default is YES.
// 单元格左侧附件样式
@property (nonatomic) UITableViewCellAccessoryType accessoryType;
// 自定义附件视图
@property (nonatomic, strong, nullable) UIView *accessoryView;
// 编辑状态的附件样式
@property (nonatomic) UITableViewCellAccessoryType editingAccessoryType;
// 编辑状态的自定义附件视图
@property (nonatomic, strong, nullable) UIView *editingAccessoryView;
// 单元格内容的缩进级别
@property (nonatomic) NSInteger indentationLevel; // default is 0
// 单元格内容宽度缩进级别
@property (nonatomic) CGFloat indentationWidth; // default is 10.0
// 设置间隔
@property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR __TVOS_PROHIBITED;
// 是否编辑状态
@property (nonatomic, getter=isEditing) BOOL editing;
- (void)setEditing:(BOOL)editing animated:(BOOL)animated;
// 单元格是否显示删除按钮
@property(nonatomic, readonly) BOOL showingDeleteConfirmation; // currently showing "Delete" button
// 聚焦样式
@property (nonatomic) UITableViewCellFocusStyle focusStyle NS_AVAILABLE_IOS(9_0) UI_APPEARANCE_SELECTOR;
// 当单元格将要改变的时候调用
- (void)willTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);
// 当单元格已经改变的时候调用
- (void)didTransitionToState:(UITableViewCellStateMask)state NS_AVAILABLE_IOS(3_0);
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 单元格风格
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault, // 左侧显示textLabel(不显示detailTextLabel),imageView可选(显示在最左边)
UITableViewCellStyleValue1, // 左侧显示textLabel、右侧显示detailTextLabel(默认蓝色),imageView可选(显示在最左边
UITableViewCellStyleValue2, // 左侧依次显示textLabel(默认蓝色)和detailTextLabel,imageView可选(显示在最左边)
UITableViewCellStyleSubtitle // 左上方显示textLabel,左下方显示detailTextLabel(默认灰色),imageView可选(显示在最左边)
};
// 单元格分割样式
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {
UITableViewCellSeparatorStyleNone, // 无
UITableViewCellSeparatorStyleSingleLine, // 有单条分割线,默认
UITableViewCellSeparatorStyleSingleLineEtched // 两条分割线
} __TVOS_PROHIBITED;
// 单元格选中样式
typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
UITableViewCellSelectionStyleNone, // 无
UITableViewCellSelectionStyleBlue, // 默认选中样式
UITableViewCellSelectionStyleGray, // 选中呈现灰色
UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0) // 表格单元格显示样式
};
// 聚焦样式
typedef NS_ENUM(NSInteger, UITableViewCellFocusStyle) {
UITableViewCellFocusStyleDefault, // 当聚焦时采用系统默认样式
UITableViewCellFocusStyleCustom // 当聚焦是采用自定义样式
} NS_ENUM_AVAILABLE_IOS(9_0);
// 编辑状态样式
typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {
UITableViewCellEditingStyleNone, // 无
UITableViewCellEditingStyleDelete, // 删除
UITableViewCellEditingStyleInsert // 插入
};
// 附件样式
typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) {
UITableViewCellAccessoryNone, // 无
UITableViewCellAccessoryDisclosureIndicator, // 箭头
UITableViewCellAccessoryDetailDisclosureButton __TVOS_PROHIBITED, // 显示详情符号和灰色箭头
UITableViewCellAccessoryCheckmark, // 复选框
UITableViewCellAccessoryDetailButton NS_ENUM_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED
};
// 表格状态
typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
UITableViewCellStateDefaultMask = 0, // 默认
UITableViewCellStateShowingEditControlMask = 1 << 0, // 编辑状态
UITableViewCellStateShowingDeleteConfirmationMask = 1 << 1 // 删除状态
};