mirror of
https://github.com/zhigang1992/RETableViewManager.git
synced 2026-06-19 01:56:30 +08:00
Add ability to assign actions for accessoryButton
This commit is contained in:
@@ -30,9 +30,10 @@
|
||||
@property (assign, nonatomic) UITableViewCellAccessoryType accessoryType;
|
||||
@property (strong, nonatomic) UIView *accessoryView;
|
||||
|
||||
+ (id)itemWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType;
|
||||
+ (id)itemWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView;
|
||||
- (id)initWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType;
|
||||
- (id)initWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView;
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock;
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView actionBlock:(void(^)(RETableViewItem *item))actionBlock;
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock;
|
||||
- (id)initWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock;
|
||||
- (id)initWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock;
|
||||
|
||||
@end
|
||||
|
||||
@@ -27,22 +27,28 @@
|
||||
|
||||
@implementation REStringItem
|
||||
|
||||
+ (id)itemWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock
|
||||
{
|
||||
return [[REStringItem alloc] initWithTitle:title actionBlock:actionBlock accessoryType:accessoryType accessoryView:nil];
|
||||
return [[REStringItem alloc] initWithTitle:title accessoryType:accessoryType accessoryView:nil actionBlock:actionBlock accessoryButtonActionBlock:nil];
|
||||
}
|
||||
|
||||
+ (id)itemWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView
|
||||
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView actionBlock:(void(^)(RETableViewItem *item))actionBlock
|
||||
{
|
||||
return [[REStringItem alloc] initWithTitle:title actionBlock:actionBlock accessoryType:accessoryType accessoryView:accessoryView];
|
||||
return [[REStringItem alloc] initWithTitle:title accessoryType:accessoryType accessoryView:accessoryView actionBlock:actionBlock accessoryButtonActionBlock:nil];
|
||||
}
|
||||
|
||||
- (id)initWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType;
|
||||
+ (id)itemWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock
|
||||
{
|
||||
return [self initWithTitle:title actionBlock:actionBlock accessoryType:accessoryType accessoryView:nil];
|
||||
return [[REStringItem alloc] initWithTitle:title accessoryType:accessoryType actionBlock:actionBlock accessoryButtonActionBlock:accessoryButtonActionBlock];
|
||||
}
|
||||
|
||||
- (id)initWithTitle:(NSString *)title actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView
|
||||
- (id)initWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock
|
||||
{
|
||||
return [self initWithTitle:title accessoryType:accessoryType accessoryView:nil actionBlock:actionBlock accessoryButtonActionBlock:accessoryButtonActionBlock];
|
||||
}
|
||||
|
||||
- (id)initWithTitle:(NSString *)title accessoryType:(UITableViewCellAccessoryType)accessoryType accessoryView:(UIView *)accessoryView actionBlock:(void(^)(RETableViewItem *item))actionBlock accessoryButtonActionBlock:(void(^)(RETableViewItem *item))accessoryButtonActionBlock
|
||||
{
|
||||
self = [super init];
|
||||
if (!self)
|
||||
@@ -53,6 +59,7 @@
|
||||
self.accessoryView = accessoryView;
|
||||
self.actionBlock = actionBlock;
|
||||
self.performActionOnSelection = YES;
|
||||
self.accessoryButtonActionBlock = accessoryButtonActionBlock;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
@property (copy, readwrite, nonatomic) NSString *title;
|
||||
@property (copy, readwrite, nonatomic) void (^actionBlock)(id item);
|
||||
@property (copy, readwrite, nonatomic) void (^accessoryButtonActionBlock)(id item);
|
||||
@property (assign, readwrite, nonatomic) BOOL performActionOnSelection;
|
||||
@property (assign, readonly, nonatomic) BOOL canFocus;
|
||||
@property (weak, readwrite, nonatomic) RETableViewSection *section;
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
- (void)tableView:(UITableView *)tableView styleCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath item:(id)items;
|
||||
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;
|
||||
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath item:(id)items;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -192,6 +192,23 @@
|
||||
[_delegate tableView:tableView didSelectRowAtIndexPath:indexPath item:item];
|
||||
}
|
||||
|
||||
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
RETableViewSection *section = [_sections objectAtIndex:indexPath.section];
|
||||
id item = [section.items objectAtIndex:indexPath.row];
|
||||
if ([item respondsToSelector:@selector(setActionBlock:)]) {
|
||||
RETableViewItem *actionItem = (RETableViewItem *)item;
|
||||
if (actionItem.accessoryButtonActionBlock)
|
||||
actionItem.accessoryButtonActionBlock(item);
|
||||
}
|
||||
|
||||
if ([_delegate respondsToSelector:@selector(tableView:accessoryButtonTappedForRowWithIndexPath:)])
|
||||
[_delegate tableView:tableView accessoryButtonTappedForRowWithIndexPath:indexPath];
|
||||
|
||||
if ([_delegate respondsToSelector:@selector(tableView:accessoryButtonTappedForRowWithIndexPath:item:)])
|
||||
[_delegate tableView:tableView accessoryButtonTappedForRowWithIndexPath:indexPath item:item];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
||||
@@ -54,17 +54,21 @@
|
||||
|
||||
section = [[RETableViewSection alloc] initWithHeaderTitle:@"Accessories"];
|
||||
[_manager addSection:section];
|
||||
[section addItem:[REStringItem itemWithTitle:@"Accessory 1" actionBlock:^(RETableViewItem *item) {
|
||||
[section addItem:[REStringItem itemWithTitle:@"Accessory 1" accessoryType:UITableViewCellAccessoryDisclosureIndicator actionBlock:^(RETableViewItem *item) {
|
||||
[weakSelf.tableView deselectRowAtIndexPath:item.indexPath animated:YES];
|
||||
} accessoryType:UITableViewCellAccessoryDisclosureIndicator]];
|
||||
}]];
|
||||
|
||||
[section addItem:[REStringItem itemWithTitle:@"Accessory 2" actionBlock:^(RETableViewItem *item) {
|
||||
REStringItem *accessoryItem2 = [REStringItem itemWithTitle:@"Accessory 2" accessoryType:UITableViewCellAccessoryDetailDisclosureButton actionBlock:^(RETableViewItem *item) {
|
||||
[weakSelf.tableView deselectRowAtIndexPath:item.indexPath animated:YES];
|
||||
} accessoryType:UITableViewCellAccessoryDetailDisclosureButton]];
|
||||
}];
|
||||
accessoryItem2.accessoryButtonActionBlock = ^(RETableViewItem *item) {
|
||||
NSLog(@"Accessory button in accessoryItem2 was tapped");
|
||||
};
|
||||
[section addItem:accessoryItem2];
|
||||
|
||||
[section addItem:[REStringItem itemWithTitle:@"Accessory 2" actionBlock:^(RETableViewItem *item) {
|
||||
[section addItem:[REStringItem itemWithTitle:@"Accessory 2" accessoryType:UITableViewCellAccessoryCheckmark actionBlock:^(RETableViewItem *item) {
|
||||
[weakSelf.tableView deselectRowAtIndexPath:item.indexPath animated:YES];
|
||||
} accessoryType:UITableViewCellAccessoryCheckmark]];
|
||||
}]];
|
||||
|
||||
// Set delegate and datasource
|
||||
//
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
RETableViewSection *section = [[RETableViewSection alloc] init];
|
||||
[_manager addSection:section];
|
||||
|
||||
[section addItem:[REStringItem itemWithTitle:@"Forms" actionBlock:^(RETableViewItem *item) {
|
||||
[section addItem:[REStringItem itemWithTitle:@"Forms" accessoryType:UITableViewCellAccessoryDisclosureIndicator actionBlock:^(RETableViewItem *item) {
|
||||
[weakSelf.navigationController pushViewController:[[ControlsViewController alloc] initWithStyle:UITableViewStyleGrouped] animated:YES];
|
||||
} accessoryType:UITableViewCellAccessoryDisclosureIndicator]];
|
||||
}]];
|
||||
|
||||
[section addItem:[REStringItem itemWithTitle:@"List" actionBlock:^(RETableViewItem *item) {
|
||||
[section addItem:[REStringItem itemWithTitle:@"List" accessoryType:UITableViewCellAccessoryDisclosureIndicator actionBlock:^(RETableViewItem *item) {
|
||||
[weakSelf.navigationController pushViewController:[[ListViewController alloc] initWithStyle:UITableViewStylePlain] animated:YES];
|
||||
} accessoryType:UITableViewCellAccessoryDisclosureIndicator]];
|
||||
}]];
|
||||
|
||||
// Set delegate and datasource
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user