使用SWTableViewCell获得ios7邮件中cell的右推出现选项的效果

SWTableViewCell 是托管在GitHub上的一个第三方UITableViewCell子类,它提供向左向右滑动出现“删除”,“更多”等自定义UIButton的功能,该功能类似于iOS7中的邮件中的Cell。GitHub主页: https://github.com/CEWendel/SWTableViewCell

Example:

场景:假如我现在要做一个TableView,它的cell就是SWTableViewCell的效果。

ViewController.h

#import <UIKit/UIKit.h>
#import <SWTableViewCell.h>

@interface ViewController : UIViewController
<UITableViewDataSource,
UITableViewDelegate,
SWTableViewCellDelegate]]>

@property (nonatomic, strong) UITableView *tableView;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, strong) NSMutableArray *dataArray;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self initViews];
}

- (void)initViews
{

    _dataArray = [NSMutableArray arrayWithObjects:@"Shanghai",@"Beijing", @"Nanjing", @"Hangzhou",@"HongKong", @"Shenzhen", nil];
    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 640)];
    _tableView.delegate = self;
    _tableView.dataSource  = self;
    [self.view addSubview:_tableView];
}

#prama mark - UITableViewDelegate
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";

    SWTableViewCell *cell = (SWTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[SWTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        cell.leftUtilityButtons = [self leftButtons];
        cell.rightUtilityButtons = [self rightButtons];
        cell.delegate = self;
    }

    cell.textLabel.text = _dataArray[indexPath.row];

    return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 4;
}

- (NSArray *)rightButtons
{
    NSMutableArray *rightUtilityButtons = [NSMutableArray new];
    [rightUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:0.78f green:0.78f blue:0.8f alpha:1.0]
                                                title:@"More"];
    [rightUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:1.0f green:0.231f blue:0.188 alpha:1.0f]
                                                title:@"Delete"];

    return rightUtilityButtons;
}

- (NSArray *)leftButtons
{
    NSMutableArray *leftUtilityButtons = [NSMutableArray new];

    [leftUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:0.07 green:0.75f blue:0.16f alpha:1.0]
                                                title:@"Left1"];
    [leftUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:1.0f green:1.0f blue:0.35f alpha:1.0]
                                                title:@"Left2"];
    [leftUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:1.0f green:0.231f blue:0.188f alpha:1.0]
                                                title:@"Left3"];
    [leftUtilityButtons sw_addUtilityButtonWithColor:
     [UIColor colorWithRed:0.55f green:0.27f blue:0.07f alpha:1.0]
                                                title:@"Left4"];
    return leftUtilityButtons;
}

#pragma mark - SWTableViewDelegate
- (void)swipeableTableViewCell:(SWTableViewCell *)cell didTriggerLeftUtilityButtonWithIndex:(NSInteger)index {
    switch (index) {
        case 0:
            NSLog(@"check button was pressed");
            break;
        case 1:
            NSLog(@"clock button was pressed");
            break;
        case 2:
            NSLog(@"cross button was pressed");
            break;
        case 3:
            NSLog(@"list button was pressed");
        default:
            break;
    }
}

- (void)swipeableTableViewCell:(SWTableViewCell *)cell didTriggerRightUtilityButtonWithIndex:(NSInteger)index {
    switch (index) {
        case 0:
            NSLog(@"More button was pressed");
            break;
        case 1:
        {
            NSLog(@"Delete button was pressed");
        }
        default:
            break;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end

效果:

注意!: 如果要在自定义的TableViewCell中使用SWTableViewCell, 在向swTableViewCell 中添加组件的时候,需要使用swTableViewCell.contentView addSubview: 方法,否则,在向左或者向右滑动的时候,添加的组件不会随之滑动。

使用SWTableViewCell获得ios7邮件中cell的右推出现选项的效果,布布扣,bubuko.com

时间: 2024-10-22 13:18:32

使用SWTableViewCell获得ios7邮件中cell的右推出现选项的效果的相关文章

iOS7中Cell高度 Label高度自适应

? 1 2 3 4 5 6 7 8 9 10 11 12 ?- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{     NSString *str = [_dataArray objectAtIndex:indexPath.row];     UIFont *tfont = [UIFont systemFontOfSize:14.0];     NSDictio

在ios7开发中遇到的一些deprecated的问题

cell.textLabel.textAlignment = UITextAlignmentCenter; 现在要写成cell.textLabel.textAlignment =NSTextAlignmentCenter; UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease]; 需要写成 static NSString *TableS

MIME协议在邮件中的应用详解

1.定义 全称是多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions),在MIME出台之前,使用RFC 822只能发送基本的ASCII码文本信息,邮件内容如果要包括二进制文件.声音和动画等,实现起来非常困难,最为麻烦的是多家邮件服务器商间邮件的互发,如果没有一种统一的格式定义,想要互发需要投入巨大的人力物力.MIME提供了一种可以在邮件中附加多种不同编码文件的方法,弥补了原来的信息格式的不足.实际上不仅仅是邮件编码,现在MIME经成为HTTP

如何在邮件中嵌入图片,而非上传在附件

刚接触OutLook使用公司的邮箱发邮件.问题来了,每次从本地目录 Ctrl+c 拷贝一个图片Ctrl+v到邮件正文,这个图片都会到了附件栏上.如下图: 产生这样的原因是因为直接复制的图片就是一个文档,只能保存到附件上. 要达到自己想要的结果,有两种方式可以把图片直接放到邮件正文上: 使用QQ截图打钩后,Ctrl+v能把截图的图片放在邮件正文上. 开一个空白word文档,把你要的图片使用CV大法(复制.粘贴)到word文档中,再选中word文档中的目标图片,CV大法到邮件正文上,这样的图片就不会

iOS开发实战——CollectionView中cell的间距设置

我在前面多篇博客中详细讲解了CollectionView的使用与自定义CollectionViewCell的设计,可以参考<iOS开发实战--CollectionView点击事件与键盘隐藏结合案例><iOS高级开发--CollectionView修改cell的文本及模型重构>这几篇博客.但是今天还是需要来讲讲CollectionView实现中的一个小小的坑,这是我最近在网上浏览时发现很多开发者经常犯的错,所以我觉得有必要来好好谈一谈. 一个CollectionView控件中,两个c

通过代码在邮件中嵌入图片

在一个开发需求中需要将一张图片嵌入邮件中并发送出去. 正常的邮件发送代码(c#)如下: MailMessage mail = new MailMessage(from, to, subject, emailBody); 如果需要邮件支持Html,需要将IsBodyHtml设置成true:mail.IsBodyHtml = true; 1.第一个想到的方式是在emailBody中添加<img scr="">标签,但如果收到邮件的用户无法访问scr中的资源链接,将会导致图片无法

Launch Screen在iOS7/8中的实现

Launch Screen在iOS7/8中的实现 目前项目中需要解决的问题是: 兼容iOS7和iOS8,之前的版本不需要支持了 实现兼容3.5.4.4.7和5.5寸屏幕,竖屏的Lauch Screen 创建所需的PNG图片 有关iPhone6/6+相关尺寸见这里 需要如下尺寸图片: 用于iPhone6+的1242x2208,或者1080x1920,也就是Retina HD 5.5 用于iPhone6的750x1334,也就是Retina HD 4.7 用于4寸屏(iPhone5/5s)的640x

outlook邮件中超链接无法打开

故障现象:win7ProSP1中文版, outlook2013中文版,发现邮件中的超链接无法打开,提示被公司策略限制而无法打开"Your organization's policies preventing us from completing this action for you. For more infomation, please contact your system administrator." 解决办法: 运行regedit, 定位到hkey_local_machin

matlab中cell介绍

1. matlab中cell的概念 cell又称元包,是一个类似矩阵的东西,它可以存放任何类型的数据,即矩阵.字符串.数值类: 2. cell的创建 创建cell的方法:直接使用C={A,B,E,D}这种形式,不过这里把“[]”改成了“{}”; 使用cell创建cell:C={C1,C2},这里C1和C2都是cell类型,直接把C1.C2作为一个cell得到C3是一个1*2的cell数组:使用C3 =[C1 C2],是使用C1和C2的内容来创建cell数组; 使用cell函数,A=cell(2,