一个视图控制器中的两个表

时间:2015-02-13 09:11:19

标签: ios objective-c uitableview

我在一个viewController和一个菜单按钮中有两个表视图。 最初只显示tableView1,当我按下菜单按钮时,应该出现第二个表视图,tableView1仍然存在。

我正在阅读并且实施了我发现的内容,但没有结果。

两个表视图都会出现,但数据是相同的,我不想要这个。我试图这样做:

- (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 个答案:

答案 0 :(得分:3)

我猜问题就在于:

if(tableView==tableView)

您应该将tableview参数与@property进行比较。 如果参数和iVar具有相同的名称,则参数将覆盖方法范围中的iVar。

if (tableview == self.tableView)

答案 1 :(得分:0)

我为tableview设置了一个标签,我这样做了:

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

    else { return 4;
    }

}

Idem适用于cellForRowAtIndexPath

答案 2 :(得分: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;
}