在Objective-C中实现一个全选/全不选的按钮,可以通过以下步骤:
以下是一个示例代码:
// 在视图控制器中定义全选按钮和数据源数组
@interface YourViewController ()
@property (nonatomic, strong) UIButton *selectAllButton;
@property (nonatomic, strong) NSMutableArray *selectionArray;
@end
@implementation YourViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建全选按钮
self.selectAllButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.selectAllButton setTitle:@"全选" forState:UIControlStateNormal];
[self.selectAllButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.selectAllButton addTarget:self action:@selector(selectAllButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.selectAllButton];
// 初始化数据源数组
self.selectionArray = [NSMutableArray arrayWithCapacity:yourNumberOfRows];
for (int i = 0; i < yourNumberOfRows; i++) {
[self.selectionArray addObject:@NO]; // 初始状态为未选中
}
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// 设置全选按钮的位置
self.selectAllButton.frame = CGRectMake(0, 0, self.view.bounds.size.width, 50);
}
- (void)selectAllButtonTapped:(UIButton *)sender {
// 全选按钮点击事件
BOOL selectAll = !sender.selected;
sender.selected = selectAll;
// 更新数据源数组的值为全选按钮的选中状态
for (int i = 0; i < self.selectionArray.count; i++) {
self.selectionArray[i] = @(selectAll);
}
// 刷新TableView以更新所有cell的选中状态
[self.tableView reloadData];
}
#pragma mark - UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return yourNumberOfRows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath];
// 根据数据源数组中对应位置的值,设置cell的选中状态
BOOL selected = [self.selectionArray[indexPath.row] boolValue];
cell.accessoryType = selected ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
return cell;
}
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// 点击cell时更新数据源数组的对应位置的值,并刷新cell的选中状态
BOOL selected = [self.selectionArray[indexPath.row] boolValue];
self.selectionArray[indexPath.row] = @(!selected);
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
@end
这样,你就可以在Objective-C中实现一个全选/全不选的按钮,并在TableView中控制每个cell的选中状态了。请根据你的实际需求进行适当的修改和调整。
领取专属 10元无门槛券
手把手带您无忧上云