在单个ViewController上使用多个Tableview

时间:2017-09-07 08:12:56

标签: ios objective-c uitableview

我正在单视图控制器上开发具有多个TableView的iOS应用程序。值从单个数组显示在每个tableview上。但问题是数组值显示在第一个表视图上,而不显示在另一个表视图上。有时候第二个tableview单元格值显示第一个tableview。我也试着用tableview标签值。

 code..

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return [_arrayResult count];
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *CellIdentifier = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }

        if ( tableView == _tableView) { //_clentSelect.tag == 2

            MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
            UILabel *dropValue = (UILabel *)[cell viewWithTag:100];
            dropValue.text = obj.emp_client_name;
        }
        if (tableView == _eventSeclect) {  //_clentSelect.tag == 2

            MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
            UILabel *dropValue = (UILabel *)[cell viewWithTag:1000];
            dropValue.text = obj.emp_event_name;
            NSLog(@"%@",dropValue.text);
        }
    //    if(_clentSelect.tag == 3) {
    //      
    //        MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
    //        cell.textLabel.text = obj.emp_client_name;
    //    }
        return cell;
    }

3 个答案:

答案 0 :(得分:2)

        - (void)viewDidLoad {
            [super viewDidLoad];
           //reload your table 
        }

    #pragma mark - UITableViewDataSource
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        if (tableView.tag==1) {

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

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        if (tableView.tag == 1) {
            return  10;
        }if (tableView.tag == 2) {
        returns 20;
        }
        else{return 0;}
    }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;
    if (tableView.tag == 1) {
        static NSString *cellIdentifier = @“tbl1”;
        cell = [_tbl  dequeueReusableCellWithIdentifier:cellIdentifier];
        UILabel *title = (UILabel *)[cell viewWithTag:30];
        title.text = @"1245";
             return cell;
    }
    if (tableView.tag == 2) {

    static NSString *cellIdentifier = @“tbl2”;
        cell = [_tbl1 dequeueReusableCellWithIdentifier:cellIdentifier];
        UILabel *title = (UILabel *)[cell viewWithTag:30];
        title.text = @"1245";
        return cell;    
}

答案 1 :(得分:0)

这适合你吗?如果没有,也请尝试更改UITableView插座名称。

if ( tableView == tableViewFirst) { //_clentSelect.tag == 2

        MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
        UILabel *dropValue = (UILabel *)[cell viewWithTag:100];
        dropValue.text = obj.emp_client_name;
    }
else {  //_clentSelect.tag == 2

        MEObject *obj = [_arrayResult objectAtIndex:indexPath.row];
        UILabel *dropValue = (UILabel *)[cell viewWithTag:1000];
        dropValue.text = obj.emp_event_name;
        NSLog(@"%@",dropValue.text);
    }

答案 2 :(得分:0)

你总是得到一个引用并检查调用哪个tableView委托或dataSource方法,即如果你需要不同的tableview和不同的数组,那么你需要为每个tableview设置行数和节数,如下所示:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (tableView == self.tableView1)
    {
        return 1;
    }

    if (tableView == self.tableView2)
    {
        return 1;
    }

    if (tableView == self.tableView3)
    {
        return 1;
    }
}

另外,对于行数,

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

    if (tableView == self.tableView1)
    {
        return 1;
    }

    if (tableView == self.tableView2)
    {
        return 2;
    }

    if (tableView == self.tableView3)
    {
        return 3;
    }
}

检查您要提供哪个表格视图,

您可以为tableview定制单元格,也可以为每个tableview创建单独的单元格。

  1. 两个tableview的相同单元格:(在视图中注册你的自定义nib加载)

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *CellIdentifier = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (tableView == myTableView1) {
            // your code 1
        }
        else 
        if (tableView == myTableView2) {
            // your code 2
        }
        else 
        if (tableView == myTableView3) {
            // your code 3
        }
    }
    
  2. 用于tableview的不同单元格:(在视图中注册你的自定义nib加载)

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        if (tableView == myTableView1) {
            // your code 1
            NSString *CellIdentifier = @"cell1";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        }
        else 
        if (tableView == myTableView2) {
            // your code 2
            NSString *CellIdentifier = @"cell2";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        }
        else 
        if (tableView == myTableView3) {
            // your code 3
            NSString *CellIdentifier = @"cell3";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        }
    }