iPad popView封装
仿照UITableView的UITableViewDataSource
协义
1.代理。让代理帮我们类完毕一些方法
2.完毕当前类不能完毕的事情还有传值等功能
实现方法
// 1. 声明一个协议
// 2. 声明协议中的方法
// 3. 声明一个遵守协议的id类型的指针
// 4. 实现协议方法
@class popView;
@protocol MyPopviewDataSource <NSObject>
//制定协议方法
//left tablevie 行数
- (NSInteger)numberOfRowsInLeftTable:(popView *)popView;
//left 标题
- (NSString *)popView:(popView *)popView titleForRow:(NSInteger)row;
//left 图标
- (NSString *)popView:(popView *)popView imageForRow:(NSInteger)row;
//left 子数据
- (NSArray *)popView:(popView *)popView subDataForRow:(NSInteger)row;
@end
@interface popView :UIView
@property (nonatomic,assign)id<MyPopviewDataSource> dataSource;
+ (popView*)makePopView;
@end
#import "popView.h"
@interface popView ()<UITableViewDataSource,UITableViewDelegate>
@property (weak,
nonatomic) IBOutletUITableView *leftTV;
@property (weak,
nonatomic) IBOutletUITableView *rightTV;
@property (nonatomic,assign)NSInteger selectRow;
@end
@implementation popView
+ (popView *)makePopView
{
return [[[NSBundlemainBundle]loadNibNamed:@"popView"owner:selfoptions:nil]firstObject];
}
#pragma mark - tableview delegate
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == _leftTV) {
return [self.dataSourcenumberOfRowsInLeftTable:self];
}else{
return [self.dataSourcepopView:selfsubDataForRow:_selectRow].count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == _leftTV) {
static NSString *str =@"Mycell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str];
if (cell ==
nil) {
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:str];
}
cell.textLabel.text = [self.dataSourcepopView:selftitleForRow:indexPath.row];
cell.imageView.image = [UIImageimageNamed:[self.dataSourcepopView:selfimageForRow:indexPath.row]];
NSArray *subDataArray = [self.dataSourcepopView:selfsubDataForRow:indexPath.row];
if (subDataArray.count) {
cell.accessoryType =UITableViewCellAccessoryDisclosureIndicator;
}else{
cell.accessoryType =UITableViewCellAccessoryNone;
}
return cell;
}else{
static NSString *str =@"Mycell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:str];
if (cell ==
nil) {
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:str];
}
cell.textLabel.text = [self.dataSourcepopView:selfsubDataForRow:_selectRow][indexPath.row];
return cell;
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == _leftTV) {
self.selectRow = indexPath.row;
[_rightTVreloadData];
}
}
@end
在控制器使用
#import "PopViewController.h"
#import "popView.h"
#import "CategoriyModel.h"
@interface PopViewController ()<MyPopviewDataSource>
@end
@implementation PopViewController
- (void)viewDidLoad
{
[superviewDidLoad];
popView *pop = [popViewmakePopView];
[self.viewaddSubview:pop];
pop.dataSource =self;
pop.autoresizingMask =UIViewAutoresizingNone;
self.preferredContentSize =CGSizeMake(pop.frame.size.width, pop.frame.size.height);
}
//获取到
第一个分类数据下拉菜单的模型数组
- (NSArray *)getData
{
CategoriyModel *md = [[CategoriyModelalloc]init];
NSArray *categorieyArray = [md loadPlistData];
return categorieyArray;
}
#pragma mark - popview dataSource
- (NSInteger)numberOfRowsInLeftTable:(popView *)popView{
return [selfgetData].count;
}
- (NSString *)popView:(popView *)popView titleForRow:(NSInteger)row{
return [[selfgetData][row]name];
}
- (NSString *)popView:(popView *)popView imageForRow:(NSInteger)row{
return [[selfgetData][row]small_icon];
}
- (NSArray *)popView:(popView *)popView subDataForRow:(NSInteger)row{
return [[selfgetData][row]subcategories];
}
@end
iPad popView封装的更多相关文章
- iPad编程
1. iPad 现有型号: iPad Pro, iPad Air, iPad mini 均配备Retina显示屏.早期还有iPad 依次对应的坐标系及分辨率: iPad Pro 坐标系:1366 x ...
- 功能源代码(扇形进度)及Delegate运用在开放事件中、UINavigationController的封装
1:扇形进度视图及运用 首先先创建扇形的视图,传入进度值 #import <UIKit/UIKit.h> @interface LHProgressView : UIView @prope ...
- iPad和iPhone开发区别
原文:http://mobile.51cto.com/iphone-273895.htm iPad与iPhone 开发区别详解是本文要介绍的内容,先来看看他们的区别. 1.首先我们先从官方发布的SDK ...
- 封装同步的UIActionSheet
封装同步的UIActionSheet 发问题 做 iOS 开发的同学想必都用过 UIActionSheet.UIActionSheet 可以弹出一个选择列表,让用户选择列表中的某一项操作.使用 UIA ...
- 封装cookie.js、EventUtil.js、
最近学习了javascript,封装好的东西看起来舒服,以备需要的时候拉出来,jquery对javascript做了很好的封装!以后会多用jquery多些 var CookieUtil = { get ...
- 初识iOS9 iPad新特性SlideView和SplitView的适配
苹果刚发布了iOS9,在iPad上新增了两个新的特性SlideView和SplitView,前者可以在不关闭当前激活APP的情况下调出来另外个APP以30%比例显示进行操作使用,后者允许同时运行两个A ...
- iPad开发(相对于iPhone开发时专有的API)
iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...
- oc之封装与类之间的关系
1. 面向对象的特征-封装? 封装: 现实生活中的封装: 将很多的小东西 塞在1个大口袋里面. 好处: a. 对外部屏蔽. b. 方便管理. 代码的封装: 函数/方法 就是1种封装的体现: 将一段代码 ...
- 架构漫谈系列(2) 封装(Encapsulation)
这是这个系列的第二篇.在第二篇里,我决定讲一讲封装. 程序的不同部分应该用封装去互相隔离,模块之间应该不应该产生很随意的关联. 可能有的人觉得不解,又或觉得是有道理的废话,不急,先一步一步来. 我们先 ...
随机推荐
- ActiveMQ学习笔记(4)----JMS的API结构和开发步骤
1. JMS的API结构 其实上图中的五个API在第一节中我们都已经使用到了.本节将会讲非持久化和持久化topic的使用. 2. JMS的基本开发步骤 1. 创建一个JMS工厂, Connectio ...
- Pytorch搭建简单神经网络 Task2
1>建立数据集(并绘制图像) # -*- coding: utf-8 -*- #demo.py import torch import torch.nn.functional as F # 主要 ...
- 越努力越幸运--3-日常bug修复
提供一个so给PYTHON调用,后端发现业务处理流程不是按照方法传入的参数来跑. 查看c的代码,看了客户端没看出什么问题,查看服务端为什么会出现这样的情况,有些字段明显不是入参带过来的,跟踪服务端解析 ...
- Android中设置半个屏幕大小且居中的button布局 (layout_weight属性)
先看例如以下布局 :
- C++primer读书笔记11-多态
多态也是C++中的一个重要的方面.多态和动态类型,虚函数本质上是指同样的事情. 1 虚函数 类中的成员函数原型前面加上virtual 表面这个函数是个虚函数.虚函数的目的是为了在继承它的派生类中又一次 ...
- Mysql信息数据库:Information_schema
1. Information_schema information_schema是mysql的信息数据库. 通过该库能够查看mysql以下的数据库,表.权限等信息. 在数据库中会默认生成这个库.inf ...
- Android-Universal-Image-Loader 的使用说明
这个图片异步载入并缓存的类已经被非常多开发人员所使用,是最经常使用的几个开源库之中的一个,主流的应用,随便反编译几个火的项目,都能够见到它的身影. 但是有的人并不知道怎样去使用这库怎样进行配置,网上查 ...
- jsoncpp-src-0.5.0.tar.gz 源码错误!!!!
近期在做毕设,使用到了JsonCpp0.5.0版本号的源码! 依照网上的安装配置教程,搭建好环境后就能够使用了! 在这里就不浪费空间去将怎样搭建开发环境了!请大家去google一下就好了! 在解析一个 ...
- server用JDBC对mysql数据库进行操作
1:获取数据库连接 Connection connection=getConnection(); 2:准备SQL语句 3:调用Connection的creatStatement()方法获取Statem ...
- 46. AngularJS所有版本下载
转自:https://www.cnblogs.com/best/tag/Angular/ 官网下载:https://angularjs.org/ AngularJS所有版本下载:https://cod ...