2013-11-26 2 views
2

Как я могу достичь следующих функций.Два UITableView на вид

У меня есть мнение, что я хочу, чтобы добавить два UITableView как подвид этого View ..

  1. monthTableView
  2. dayTableView.

как tableView размер кадра - размер родительского вида.

но только одна таблица будет видна за раз. Пример:

Мне нужен метод, поэтому, когда я когда-либо называл этот метод, необходимо проверить, какой вид таблицы просматривается в настоящее время через переменную флага.

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]; 
} 

как я могу достичь этого .. любезно проведет меня. спасибо заранее ...

+0

@ user28882259 сослаться мой ответ. Определенно это поможет вам. – Smita

ответ

2

Дифференцируйте обе таблицы, указав tag.i.e.

Для первого табличного -

firstTableView.tag = 1; 

Для второго табличного -

secondTableView.tag = 2; 

и в DataSource и делегат методах дифференциация представлений таблиц по тегу -

if(tableView.tag == 1){ 

    //do something 

}else{ 

    //do something for send table view 

} 
2

Вам нужно установите значение «тег» для представления таблицы, а затем проверьте значение тега, используя следующий код:

if (tableView.tag == 0) { 
    // tableView 1 
} 
else if (tableView.tag == 1) { 
    // tableView 2 
} 

Вы можете установить значение тега в построителе интерфейса или в коде. используя setTag: способ.

3

В методах делегата в виде таблицы вы увидите параметр tableView, который представляет собой не что иное, как ваш текущий tableView. Вы можете использовать это, чтобы различать ваши таблицы.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(tableView == monthTableView) 
    { 
     //code for monthTableView 
    } 
    else if(tableView == dayTableView) 
    { 
     //code for dayTableView 
    } 
    //extra coding 
} 
2

Вы можете получить это, используя единое представление таблицы. вам нужно использовать методы сбора данных и делегирования для дифференциации данных за день и месяц. Что вы можете сделать, это использовать перечисление для данных таблицы, один из которых - День, а второй - месяц. Сейчас в .h контроллера

enum TableContentType { 
    kDay = 0, 
    kMonth = 1 
}; 


@property (assign) enum TableContentType tableContentType; 
@property (nonatomic, strong) NSMutableArray * monthDataArray; 
@property (nonatomic, strong) NSMutableArray * dayDataArray; 

Сейчас в.м-файл

действие для переключения содержимого таблицы с первого дня в месяц или наоборот

- (IBAction)changeTableContent:(id)sender 
{ 
    self.tableContentType = (self.tableContentType == kDay) ? kMonth : kDay; 

    [self.table reloadData]; 

} 

В таблице DataSource и методы делегата

- (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]; 
    } 

} 

Методы создания ячеек для заданных 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 

} 

Это поможет вам чесотки сценарий, который у вас есть

Смежные вопросы