一个视图上的两个UITableView



如何实现以下功能。

我有一个视图,因为我想添加两个UITableView作为该视图的子视图。。

  1. monthTableView
  2. 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
}

这将帮助您管理

的场景

最新更新