UITableView设置界面完整封装(二)

简单MVC实现UITableView设置界面之Cell右边类型设置

首先来看看第一种方法证明使用,结合两种方法之后根据个人的爱好去选择就可以了,

一:使用枚举的方式

在Cell模型中定义一个枚举类,

typedef enum : NSUInteger {
    XMGSettingItemRightViewTypeArrow,
    XMGSettingItemRightViewTypeSwitch,
} XMGSettingItemRightViewType;

然后定义一个枚举对应的属性

 /** cell右边辅助视图类型 *
 @property (nonatomic, assign) iCocosSettingItemRightViewType type;

因为cell中的一个cellforRowAtIndexPath里面设置对应的cell右边的类型(accessoryType和accessoryView),

所以这里就在这个方法里面判断对应的模型,就是外面传过来的枚举类型设置对应的控件属性

最后一步我们就可以在对应的创建Cell的时候设置对应枚举的类型

此时就可以实现类型的设置

二:使用继承模型的方式

第二种就是使用继承自Cell模型的子类模型用来实现类型的设置

 
好处:
  • 1:每个Cell不一样,而且不同的Cell可能不需要实现点击进入
  • 2:更加体现了MVC思念,实现解藕

新建对应类型的两个模型类,里面不需要做任何操作

SWitch中定义一个开关属性来记录开关的状态

/** 开关值 */

@property (nonatomic, assign) BOOL isOpen;

在Cell中判断并且设置对应的类型

 #pragma mark - 设置辅助视图

 - (void)setUpAccessoryView

 {

     // 设置辅助视图

     if ([_item isKindOfClass:[iCocosSettingArrowItem class]]) {

         // 展示箭头

         UIImageView *arrowView = [[UIImageView alloc] initWithImage:[UIImageimageNamed:@"arrow_right"]];

         self.accessoryView = arrowView;

     }else if ([_item isKindOfClass:[iCocosSettingSwitchItem class]]){

         // 展示开关

         UISwitch *switchView = [[UISwitch alloc] init];

         self.accessoryView = switchView;

     }else{

         self.accessoryView = nil;

     }

 }

然后修改对应创建Cell的类型,根据对应的类型使用对应的类核父类的方法来实现不同类型的现实

     // 使用兑换码

     iCocosSettingItem *RedeemCode = [iCocosSettingArrowItem itemWithImage:[UIImage imageNamed:@"RedeemCode"] title:@"使用兑换码"];

     // 使用兑换码

     iCocosSettingItem *RedeemCode1 = [iCocosSettingArrowItem itemWithImage:[UIImage imageNamed:@"RedeemCode"] title:@"使用兑换码"];

     // 使用兑换码

     iCocosSettingItem *RedeemCode2 = [iCocosSettingArrowItem itemWithImage:[UIImage imageNamed:@"RedeemCode"] title:@"使用兑换码"];

     // 使用兑换码

     iCocosSettingItem *RedeemCode3 = [iCocosSettingArrowItem itemWithImage:[UIImage imageNamed:@"RedeemCode"] title:@"使用兑换码"];

     // 描述第一组有多少个行模型,描述第1组

     NSArray *items = @[RedeemCode,RedeemCode1,RedeemCode2,RedeemCode3];

     // 创建组模型

     iCocosGroupItem *group = [iCocosGroupItemgroupWithItems:items];

     group.footerTitle = @"bcd";

     // 添加到group总数组

     [self.groups addObject:group];

这样同样可以实现不同类型的现实:

关于这里使用哪种方式这里就不多说了,看个人,不过第二种的好处更多!

iOS开发——开发必备OC篇&UITableView设置界面完整封装(二)的更多相关文章

  1. iOS开发——开发必备OC篇&UITableView设置界面完整封装(三)

    UITableView设置界面完整封装(三) 简单MVC实现UITableView设置界面之界面跳转 创建一个需要调整的对应的控制器 在需要调整的类型模型中创建对应的属性用来实现调整类型控制器的设置 ...

  2. iOS开发——开发必备OC篇&UITableView设置界面完整封装(一)

    UITableView设置界面完整封装(一) 简单MVC实现UITableView设置界面分组数据显示 一:模型 1:cell模型 /** 描述cell图片 */ @property (nonatom ...

  3. iOS开发——开发必备OC篇&UITableView设置界面完整封装(四)

    设置界面完整封装(四) 简单MVC实现UITableView设置界面完善封装及拓展使用 关于使用和拓展, 其实基本上就是同UItableView,知识讲数据改一下就可以 拓展使用 1:首先定义一个数组 ...

  4. ios开发——实用技术篇OC篇&iOS的主要框架

    iOS的主要框架         阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...

  5. iOS开发——网络编程OC篇&使用WebView构建HyBird应用

    使用WebView构建HyBird应用 HyBird是一种本地技术与Web相结合,能过实现跨平台的移动应用开发,最常用的一个框架:PhoneGap 一:首先,写好html代码 <!DOCTYPE ...

  6. iOS应用 跳转到系统的设置界面

    现在很多APP都需要获取用户权限,例如,允许调用位置信息,读取短信,拨打电话,开启WIFI,掉头摄像头等,用户不允许APP获取这些权限的时候.最好的用户体验是,直接跳转到系统设置界面,让用户自己设置. ...

  7. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

  8. iOS开发——开发必备OC篇&彩票实战之精华讲解

    彩票实战之精华讲解 在这段时间自己研究并学习关于彩票项目开发的时候遇到各种坑,各种技术点以前或许之前用过但是却用起来不是那么熟悉,所以没遇到一个重点的地方我就会记录一下,希望不会再有下次. 本文主要讲 ...

  9. iOS开发——UI篇OC篇&UITableView多项选择

    UITableView多项选择 自定义cell和取到相应的cell就行了 TableViewCell.h #import <UIKit/UIKit.h> @interface TableV ...

随机推荐

  1. java Comparable 比较器的使用

    /** * */ package com.mindreader; import java.util.Arrays; /** * @作者 Mind reader * @内容 对象数组排序——Compar ...

  2. Epic - Spiral Matrix

    Given aNXN matrix, starting from the upper right corner of the matrix start printingvalues in a coun ...

  3. 浅谈jquery选择器

    首先来说说jquery选择器的优势: 1.简洁的写法  2.支持css1.0到3.0选择器 3.完善的处理机制. 再来说说分类: jquery选择器分为基本选择器.层次选择器.属性选择器.基本过滤选择 ...

  4. CentOS安装中文输入法:ibus

    转自 http://gnucto.blog.51cto.com/3391516/935964 系统环境:Centos 6.3 编程语言:python + Bash 输入法:ibus 权限支持:root ...

  5. Use weakref module in a cache or mapping

    The weakref module allows the Python programmer to create weak references to objects. In the followi ...

  6. s3c2440串口裸板驱动(使用fifo)

    使用fifo的好处有: 1:串口的数据发送的数据量较大时,使用fifo可以大大降低MCU的开销.(有点类似串入并出的cput处理模型,本质上还是串行收发) 2:在某些特殊场合,例如制定较复杂的协议时, ...

  7. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  8. 服务器多块磁盘 ,同时磁盘类型混合(SSD+STAT+SAS)

    服务器多块磁盘 ,同时磁盘类型混合(SSD+STAT+SAS)

  9. 第一百九十七-第二百天 how can I 坚持

    又是四天,how 快. 第一天,晚上要坐车回济南,没下班就躁动了.晚上高铁竟然是知道济南西,中间没有停,到济南九点半,去刘松家又吃了一顿.喝了不少酒.挺爽. 第二天,早上五点多就醒了,睡的婚床,哈哈, ...

  10. flask中的request对象方法

    'accept_charsets','accept_encodings','accept_languages','accept_mimetypes','access_route','applicati ...