【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介面。
相關文章
- IOS多型別Cell的tableView實現iOS多型型別View
- iOS tableView中的MVC、MVVMiOSViewMVCMVVM
- ios storyboard 獲取storyboard中的viewControlleriOSViewController
- iOS開發- tableView的協議iOSView協議
- iOS ViewController Dealloc監聽iOSViewController
- 類轉json的基類實現JSON
- iOS 類知乎”分頁”效果的實現?iOS
- iOS每個ViewController一個NavigationBariOSViewControllerNavigation
- ResponderChain+Strategy+MVVM實現一個優雅的TableViewAIMVVMView
- 『ios』view和tableview的截圖和圖片拼接iOSView
- iOS面向切面的TableView-AOPTableViewiOSView
- Hibernate 泛型實現 dao 層的基類泛型
- viewController的生命週期ViewController
- iOS - 二級連動(tableview包含 collectionview)iOSView
- iOS開發之tableView左滑刪除的兩種方法iOSView
- 基於Custom-metrics-apiserver實現Kubernetes的HPA(內含踩坑)APIServer
- 基於註解的 PHP 列舉類實現PHP
- 獲取view所在的ViewControllerViewController
- 視訊採集:iOS平臺基於AVCaptureDevice的實現iOSAPTdev
- Swift iOS : 如何一拖tableview到底的時候更新資料SwiftiOSView
- iOS tableView 分割線左右邊距調整iOSView
- string類的實現
- 基於深度學習的時間序列分類[含程式碼]深度學習
- iOS - 對 block 實現的探究iOSBloC
- 基於 Agora SDK 實現 iOS 端的多人視訊互動GoiOS
- 聊聊ViewControllerViewController
- TornadoFx的TableView元件使用View元件
- iOS動畫系列之七:實現類似Twitter的啟動動畫iOS動畫
- Vue3實現元件級基類的幾種方法Vue元件
- python 介面實現類的Python
- 線上教育系統開發中,tableview列表分割槽的實現方式View
- DDD的實體、值物件、聚合根的基類和介面:設計與實現物件
- Map類及其主要的實現類
- iOS 中的 GCD 實現詳解iOSGC
- 探索iOS中Block的實現原理iOSBloC
- iOS模式分析 使用介面卡模式重構TableViewiOS模式View
- java實現Excel定製匯出(基於POI的工具類)JavaExcel
- delphi 判斷類是否實現介面,獲取類實現的介面