`
jsntghf
  • 浏览: 2560817 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

可以左右拖动的UITableViewCell

    博客分类:
  • iOS
阅读更多

ZKRevealingTableViewController.h

 

#import <UIKit/UIKit.h>
#import "ZKRevealingTableViewCell.h"

@interface ZKRevealingTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, ZKRevealingTableViewCellDelegate>
@property (nonatomic, retain) ZKRevealingTableViewCell *currentlyRevealedCell;
@end

 

ZKRevealingTableViewController.m

 

#import "ZKRevealingTableViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface ZKRevealingTableViewController () {
	ZKRevealingTableViewCell *_currentlyRevealedCell;
}
@property (nonatomic, retain) NSArray *objects;
@end

@implementation ZKRevealingTableViewController

@synthesize objects;
@dynamic currentlyRevealedCell;

- (void)viewDidLoad {
    [super viewDidLoad];
    
	self.objects = [NSArray arrayWithObjects:@"Right", @"Left", @"Both", @"None", nil];
	self.tableView = (UITableView *)self.view;
	self.tableView.rowHeight = 52.0f;
	self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
}

#pragma mark - Accessors

- (ZKRevealingTableViewCell *)currentlyRevealedCell {
	return _currentlyRevealedCell;
}

- (void)setCurrentlyRevealedCell:(ZKRevealingTableViewCell *)currentlyRevealedCell {
	if (_currentlyRevealedCell == currentlyRevealedCell)
		return;
	
	[_currentlyRevealedCell setRevealing:NO];
	
	if (_currentlyRevealedCell)
		[_currentlyRevealedCell autorelease];
	
	[self willChangeValueForKey:@"currentlyRevealedCell"];
	_currentlyRevealedCell = [currentlyRevealedCell retain];
	[self didChangeValueForKey:@"currentlyRevealedCell"];
}

#pragma mark - ZKRevealingTableViewCellDelegate

- (BOOL)cellShouldReveal:(ZKRevealingTableViewCell *)cell {
	return YES;
}

- (void)cellDidReveal:(ZKRevealingTableViewCell *)cell {
	self.currentlyRevealedCell = cell;
}

- (void)cellDidBeginPan:(ZKRevealingTableViewCell *)cell {
	if (cell != self.currentlyRevealedCell)
		self.currentlyRevealedCell = nil;
}

#pragma mark - UIScrollViewDelegate

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
	self.currentlyRevealedCell = nil;
}

#pragma mark - UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
	return 2;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
	return (section == 0) ? @"Bounce" : @"No Bounce";
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	return self.objects.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	ZKRevealingTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
	
	if (!cell) {
		cell = [[[ZKRevealingTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"] autorelease];
		cell.delegate = self;
		cell.selectionStyle = UITableViewCellSelectionStyleNone;
		
		cell.backView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
	}
	
	cell.textLabel.text = [self.objects objectAtIndex:indexPath.row];
	cell.direction = (ZKRevealingTableViewCellDirection)indexPath.row;
	cell.shouldBounce = (BOOL)!indexPath.section;
	
	return cell;	
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
	NSUInteger row = [indexPath row];
	if (row % 2 == 0) {
		cell.backgroundColor = [UIColor whiteColor];
	} else {
		cell.backgroundColor = [UIColor colorWithRed:0.892 green:0.893 blue:0.892 alpha:1.0];
	}	
	cell.contentView.backgroundColor = cell.backgroundColor;
}

@end

 

效果图:


分享到:
评论

相关推荐

    ios-UICollectionView的简单滑动.zip

    在Storyboard中,可以通过拖拽UICollectionView对象到界面上并配置约束来创建。在代码中,可以使用以下代码创建: ```swift let collectionView = UICollectionView(frame: .zero, collectionViewLayout: ...

    SwipeableCollectionCell:基于股票Mail.app的可滑动UITableViewCell和UICollectionViewCell,

    左右滑动动作 动作按钮具有:仅文本,文本+图片,仅图片 触觉反馈 可自定义的过渡:边框,拖动和显示 滑动期间可自定义的动作按钮行为 拖动超过阈值时的动画扩展 可定制的扩展动画 辅助功能 要求 Xcode 8 iOS 9.0...

    IOS 自定义导航栏 和表格 学习笔记

    例如,可以自定义导航栏的背景色、标题文字样式、左右按钮等。要实现自定义导航栏,你可以: 1. 使用`appearance`代理方法统一设置所有导航栏的样式。 2. 在每个ViewController中重写`navigationBar:didPopItem:`...

    SwipeCellKit:基于股票Mail.app的可滑动UITableViewCellUICollectionViewCell,在Swift中实现

    左右滑动动作 动作按钮具有:仅文本,文本+图片,仅图片 触觉反馈 可自定义的过渡:边框,拖动和显示 滑动期间可自定义的动作按钮行为 拖动超过阈值时的动画扩展 可定制的扩展动画 同时支持UITableView和...

    cell滑动手势

    UITableView是一个用于显示列表数据的控件,它的每个单元格(UITableViewCell)都可以自定义以展示不同的内容。默认情况下,UITableView并不直接支持滑动手势,但可以通过自定义实现。 为了添加滑动手势,我们通常...

    Cell使用AutoLayout及UISCrollView自动布局

    例如,如果你有一个垂直布局,你可以为每个子视图设置顶部约束(相对于上一个子视图的底部),左右约束(相对于内容视图),以及固定高度。最后,内容视图的底部约束应设置为其最后一个子视图的底部,这样可以确保...

    多种动画效果单元格扩展

    4. **拖动效果**:除了基本的滑动,MGSwipeTableCell还支持更复杂的拖动手势,用户可以通过拖动单元格来触发更多的交互,比如拖动排序,这在列表管理类应用中特别有用。 这个开源项目“MGSwipeTableCell-master”...

    实现基于手势操作的界面列表视图特效

    这种展开和收起效果可以利用UITableViewCell的子视图管理,通过隐藏或显示特定的视图来实现。此外,开发者可能还运用了UITableView的代理方法来跟踪单元格的状态变化,确保正确更新界面。 在项目中,...

Global site tag (gtag.js) - Google Analytics