看你上面的UI,我给的建议是不使用UITableViewController . 而是使用UIViewController + UITableView 实现,在stroyboard中拖放一个UIViewController,再拖放一个UItableView放到UIViewController的view上,再关联上uitableview 的delegate, 及datasource
而SegmetControl放到NavigationBar 上显示比较合适,显然SegmentControl切换时显示的列表UI不同,你可以构建两个uitableview .根据segmentControl的切换来加载显示。

解决方案 »

  1.   

    我觉得如果 你把segmet 放到 navigation上,再创建一个scroller View 用selectIndex 来实现scrollerView 的滑动,在scrolleView 上创建两个tableView 当点击segment时通过 滑动scrollerView 切换页面 ,这样添加数据 就 可以了。。
      

  2.   

    谢谢大家,#1说的对我很有启发,但是我们项目要求segmentcontrol要在view上不能在navigationBar。现在已经成功解决了,给大家分享下。
        首先新建一个UIViewController(记得写上delegate和datasource),实例化一个UIView(暂且叫segmentView)和一个segmentControl、两个UITableView(tableViewA和tableViewB)。将segmentControl放在segmentView上,再将segmentView添加到self.view上,即[self.view addSubview: segmentView];这样segmentControl就添加到本页面的view上了,并给segmentControl添加点击方法。具体如下:   segmentControl = [[UISegmentedControl alloc] initWithItems:@[@"左边",@"右边"]];
        segmentControl.frame = CGRectMake(100, 10, 120, 30);
        UIView *segmentView = [[UIView alloc] initWithFrame:CGRectMake(0, 62, 320, 50)];
        segmentView.backgroundColor = [UIColor whiteColor];
        [segmentView addSubview: segmentControl];
        [self.view addSubview: segmentView];
        [segmentControl addTarget: self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];   再将tableViewA和tableViewB添加到本页面视图上,如下:
       [self.view addSubview: tableViewA];
        [self.view addSubview: tableViewB];
      -(void)segmentAction:(id)sender{
        switch ([sender selectedSegmentIndex]) {
            case 0:
                 tableViewB.hidden = YES;
                tableViewA.hidden = NO;
                [tableViewA reloadData];
                break;
                
            case 1:
                tableViewB.hidden = NO;
                tableViewA.hidden = YES;
                [tableViewB reloadData];
                break;
                
            default:
                NSLog(@"segmentActionDefault");
                break;
        }
    }然后就是cell上数据的填充了
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        switch (segmentControl.selectedSegmentIndex){
            case 0:
            {
                return 1;
            }
                break;
            case 1:
            {
                return 2;
            }
                break;
            default:
                return 1;
                break;
        }
    }- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 6;
    }//不同的tableview上添加不同的控件
    -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if ([tableView isEqual:fundaInfoView]) {
            
            static NSString *identifier = @"FundaCell";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
            if (cell == nil) {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
            }
            
            if (indexPath.row == 0) {
                UILabel *bkhrLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 12, 75, 20)];
                bkhrLabel.text = @"第一行:";
                [cell.contentView addSubview:bkhrLabel];
                bkhr = [[UITextField alloc] initWithFrame:CGRectMake(92, 7, 210, 30)];
                [cell.contentView addSubview:bkhr];
                
            }
            
            if (indexPath.row == 1) {
                UILabel *jobLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 12, 75, 20)];
                jobLabel.text = @"第二行:";
                jobLabel.textAlignment = NSTextAlignmentRight;
                [cell.contentView addSubview:jobLabel];
                job = [[UITextField alloc] initWithFrame:CGRectMake(92, 7, 210, 30)];
                [cell.contentView addSubview:job];
                
            }
            return  cell;
            
        }else if ([tableView isEqual:leaderInstrView]){
            static NSString *identifier = @"LeaderCell";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
            if (cell == nil) {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
            }
            psContent = [[UITextField alloc] initWithFrame:CGRectMake(10,3, 200, 18)];
            [cell.contentView addSubview:psContent];
            
            psName = [[UITextField alloc] initWithFrame:CGRectMake(10, 23, 304, 18)];
            [cell.contentView addSubview:psName];
            
            return  cell;
        }
        return nil;
    }//根据indexPath.row 设置不同行的行高
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        if ([tableView isEqual:tableViewA)
        {
            if (indexPath.row <= 4) {
                return 44;
            }
            if (indexPath.row == 5 || indexPath.row == 6) {
                return 120;
            }
        }
        return 44;
    }
      

  3.   

    这段错了
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 6;
    }应该是return 2;
      

  4.   

    想起来这段也忘记改了//根据indexPath.row 设置不同行的行高
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        if ([tableView isEqual:tableViewA)
        {
            if (indexPath.row <= 4) {
                return 44;
            }
            if (indexPath.row == 5 || indexPath.row == 6) {
                return 120;
            }
        }
        return 44;
    }
    改为
    //根据indexPath.row 设置不同行的行高
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        if ([tableView isEqual:tableViewA)
        {
        return 44;
       }
    两行高度一样,不需要判断了
      

  5.   

    根据segment的下标来切换tableview
      

  6.   

    那tableViewA和tableViewB创建的时候都覆盖了,那个类一直都只能一个tableView,不能两个都识别的