2015-02-13 2 views
0

У меня есть два вида таблицы в одном представлении Controller и кнопка меню. Изначально отображается только таблицаView1, когда я нажимаю кнопку меню, появляется второй вид таблицы, и таблицаView1 все еще присутствует.Две таблицы в одном представлении контроллера

Я читал, и я реализовал то, что нашел, но безрезультатно.

Отображается обе таблицы, но данные одинаковы, и я не хочу этого. Я пытался сделать так:

- (void) viewDidLoad { 
    tableView.hidden = NO; 
    tableViewMenu.hidden = YES; 

    tableView.delegate = self; 
    tableView.dataSource = self; 
    tableViewMenu.delegate = self; 
    tableViewMenu.dataSource = self;  
} 

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if (tableView == tableView) { 
     return 30; 
    }   
    else { 
     return 4; 
    }   
} 

- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{ 
    return 1; 
} 

- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (tableView == tableView) { 
     static NSString *CellIdentifier1 = @"Cell1"; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] ; 
     } 

     cell.textLabel.text = @"Table 1"; 
     NSLog(@"1here is%i %@",indexPath.row,cell.textLabel.text); 
     return cell; 
    } else { 

     static NSString *CellIdentifier2 = @"Cell2"; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2] ; 
     } 

     cell.textLabel.text = @"Table 2"; 
     return cell; 
    } 
} 


int i = 1; 
- (void) showMenu { 
    //slide the content view to the right to reveal the menu 
    //tableView.hidden = NO; 
    tableViewMenu.hidden = NO; 

    NSLog(@"Display"); 

    if (i == 1) { 
     [UITableView animateWithDuration:.25 
           animations:^{ 
            [tableView setFrame:CGRectMake(tableViewMenu.frame.size.width, tableView.frame.origin.y, tableView.frame.size.width, tableView.frame.size.height)]; 
            [testView setFrame:CGRectMake(tableViewMenu.frame.size.width, testView.frame.origin.y, testView.frame.size.width, testView.frame.size.height)]; 

     }];  
     i = 0;   

    } else {   
     [UIView animateWithDuration:.25 
         animations:^{ 
          [tableView setFrame:CGRectMake(0, tableView.frame.origin.y, tableView.frame.size.width, tableView.frame.size.height)]; 
          [testView setFrame:CGRectMake(0, testView.frame.origin.y, testView.frame.size.width, testView.frame.size.height)]; 
          tableViewMenu.hidden=YES; 

     }]; 
     i = 1; 
    } 
} 

ответ

3

Я предполагаю, что проблема является линия:

if(tableView==tableView) 

Вы должны сравнить tableview аргументы с @property. Если оба аргумента и iVar имеют одинаковое имя, аргумент переопределит ваш iVar в области метода.

if (tableview == self.tableView) 
0

Я установил для Tableview тега и я сделал это:

if (tableView.tag==0) { 
     return 30; 
    } 

    else { return 4; 
    } 

} 

Idem для cellForRowAtIndexPath

+0

Вы действительно не должны использовать тег, когда он не нужен (здесь вы уже имели свойства подключен к вашим табличным представлениям). Код намного менее читабельен и добавляет излишнюю сложность. Тег должен использоваться, если у вас нет свойств (например, если вы создаете свой код в коде) – KIDdAe

0

Вы должны иметь 2 просмотров таблицы:

@property (nonatomic, weak) IBOutlet UITableView* firstTableView; 
@property (nonatomic, weak) IBOutlet UITableView* secondTableView; 

Когда ты нажмите кнопку меню, вы должны изменить делегат следующим образом:

self.firstTableView.hidden = FALSE; 
self.secondTableView.hidden = TRUE; 
[self.firstTableView reloadData] 
self.firstTableView.dataSource = self; 
self.firstTableView.delegate = self; 

или

self.firstTableView.hidden = TRUE; 
self.secondTableView.hidden = FALSE; 
[self.secondTableView reloadData] 
self.secondTableView.dataSource = self; 
self.secondTableView.delegate = self; 

И в TableView Источник данных:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

if (tableView == self.firstTableView) { 
... 
} 

} else if (tableView == self.secondTableView){ 
... 
} 

И

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if (tableView == self.firstTableView) { 
return 30; 
    } else if (tableView == self.secondTableView){ 
return 4; 
} 
Смежные вопросы