【iOS】 含tableView的ViewController基类的实现
上篇博客写了ViewController的基类的实现,这篇博客主要写在BaseViewController的基础上实现一个含tableView控件的基类的实现,主要给包含tableView的页面来继承。
BaseTableViewViewController.h代码:
#import "BZBaseViewController.h"
#import "BZBaseTableViewCell.h"
@interface BZBaseTableViewViewController : BZBaseViewController<UITableViewDelegate,UITableViewDataSource>
@property(nonatomic,strong) UITableView * tableView;
@property(nonatomic,strong) NSArray * dataSource;
-(void)setupTableView;
@end
BaseTableViewViewController.m代码:
#import "BZBaseTableViewViewController.h"
@interface BZBaseTableViewViewController ()
@end
@implementation BZBaseTableViewViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-(void)setupTableView{
[self.view addSubview:self.tableView];
}
#pragma mark - UITableViewDelegate & UITableViewDataSource
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 0;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 0.0;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.001;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.001;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
BZBaseTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"ID"];
if (!cell) {
cell = [[BZBaseTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"];
}
return cell;
}
#pragma mark - lazy
-(UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - self.mNavigationbarHeight) style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.backgroundColor = [UIColor clearColor];
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.estimatedRowHeight = 0;
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;
}
return _tableView;
}
@end
项目中包含tableView的ViewController都可以继承自该类,重写tableView的代理方法就可以实现相应的功能。
另外,tableView的实现离不开tableViewCell,所以我们也可以写一个BaseTableViewCell,让其他的tableViewCell来继承。
BaseTableViewCell.h代码:
#import <UIKit/UIKit.h>
@interface BZBaseTableViewCell : UITableViewCell
-(void)setupUI;
@end
BaseTableViewCell.m代码:
#import "BZBaseTableViewCell.h"
@implementation BZBaseTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
self.selectionStyle = UITableViewCellSelectionStyleNone;
if (self) {
[self setupUI];
}
return self;
}
-(void)setupUI{
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
继承自BaseTableViewCell的子类直接实现-(void)setupUI;方法即可实现自定义的cell界面。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
8-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,做自己的手机TCP客户端发信息给单片机控制小灯的...
http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接:https://pan.baidu.com/s/10MxI8-Q33-M_R2WEHqEi1A密码:j1sz 先做手机的,然后做C#的 详细点的可以看我这篇文章,请参考着这篇看这篇文章,这篇文章会解决一些细节问题 http://www.cnblogs.com/yangfengwu/p/5212570.html 咱们不做很复杂的直接越简单越好,就做成这样 先编译一下 不用管,后期的话咱会用一下 最后做成这样子 发现还是有点大.. 把像素低的放到像素高的里面图片显示出来会缩小,把像素高的放到像素低的里面图片显示出来会放大 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageViewLamp = (ImageView) findVie...
-
下一篇
Android混合开发(一)
以前也用过webview,不过基本都是展示一些静态的页面,就直接对着API怼就行,现在由于某一块功能太过于繁杂,用本地的方法去开发的话就会太过于麻烦,不是做不到而是没必要,所以也就是时候好好尝试下混合开发。 这过程中会涉及到和前端JS的交互,如果没接触过前端的至少应该也要先去了解下前端,其实我对前端也只是略懂略懂。 一.开发前的准备 既然要同时开发Android原生代码和前端代码,那肯定要做些准备,android端就用android studio这是肯定的,我前端打算写vue项目(我也不会angular),我是用webstorm去开发,然后肯定也搭好了Vue的环境,前端这一块用什么写无所谓,思想和操作我觉得其实是大概相同的。 1.手机浏览本地网页 因为是开发的过程,我们不可能每次写完前端的代码都要部署一次,所以第一件要做的事就是在手机端能正常运行到前端的代码。 其实这个一般不用说的,鉴于我是第一次嘛,就顺便记录一下,那怎么做呢,那这用vue举例。 (1)首先要先让手机和电脑都同时连在一个局域网内 (2)配置vue内部的环境(这个我只懂配,不懂原理,其它框架肯定也一样)。把host和端口...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker容器配置,解决镜像无法拉取问题
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境