如何实现以下功能。
我有一个视图,因为我想添加两个UITableView
作为该视图的子视图。。
monthTableView
dayTableView
两个tableView帧的大小都是父视图的大小。
但是一次只能看到一个表。示例:
我需要一个方法,所以当我调用该方法时,需要通过flag变量检查当前可见的表视图。
if (visibleTable == monthTableView)
{
//need to add subview of parent view is dayTableView
[self addSubview:dayTableView];
}
if (visibleTable == dayTableView)
{
//need to add subview of parent view is monthTableView.
[self addSubview:monthTableView];
}
我怎样才能做到这一点。。请引导我。提前谢谢。。。
在表视图委托方法中,您将看到一个参数tableView
,它只是您当前的表视图。您可以使用它来区分表视图。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == monthTableView)
{
//code for monthTableView
}
else if(tableView == dayTableView)
{
//code for dayTableView
}
//extra coding
}
通过给出标签来区分两个表。即
对于第一个表格视图-
firstTableView.tag = 1;
对于第二表视图-
secondTableView.tag = 2;
在数据源和委托方法中,通过标记-来区分表视图
if(tableView.tag == 1){
//do something
}else{
//do something for send table view
}
您需要设置两个表视图的"标记"值,然后使用以下代码检查标记值:
if (tableView.tag == 0) {
// tableView 1
}
else if (tableView.tag == 1) {
// tableView 2
}
您可以在接口生成器或代码中设置标记值。使用setTag:方法。
您可以通过使用单个表视图来实现这一点。您需要做的是使用datasource和delegate方法来区分Day和Month的数据。您可以对表数据使用enum,一个键是Day,第二个键是Month。现在是控制器的.h
enum TableContentType {
kDay = 0,
kMonth = 1
};
@property (assign) enum TableContentType tableContentType;
@property (nonatomic, strong) NSMutableArray * monthDataArray;
@property (nonatomic, strong) NSMutableArray * dayDataArray;
现在在.m文件中
将表格内容从"天"切换到"月"或从"月"切换到的操作
- (IBAction)changeTableContent:(id)sender
{
self.tableContentType = (self.tableContentType == kDay) ? kMonth : kDay;
[self.table reloadData];
}
在表DataSource和Delegate方法中
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return (self.tableContentType == kDay) ? self.dayDataArray.count : self.monthDataArray.count ;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;
if (cell == nil) {
cell = (self.tableContentType == kDay) ? [self createDayCellForIndexPath: indexPath] : [self createMOnthCellForIndexPath: indexPath];
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.tableContentType == kDay)
{
[self dayCellTappedForIndexPath: indexPath];
}else
{
[self monthCellTappedForIndexPath: indexPath];
}
}
为日和月的给定索引路径创建单元格的方法
- (UITableViewCell *)createDayCellForIndexPath:(NSIndexPath*)indexPath
{
UITableViewCell * dayCell = nil;
// write your code for day cell here
return dayCell;
}
- (UITableViewCell *)createMonthCellForIndexPath:(NSIndexPath*)indexPath
{
UITableViewCell * monthCell = nil;
// write your code for month cell here
return monthCell;
}
针对日和月执行细胞选择操作的方法
- (void)dayCellTappedForIndexPath: (NSIndexPath *)indexPath
{
// write your code for day cell tap
}
- (void)monthCellTappedForIndexPath: (NSIndexPath *)indexPath
{
// write your code for month cell tap
}
这将帮助您管理