我可以在表视图控制器中有另一个tableview吗?

时间:2014-01-17 09:28:58

标签: ios iphone objective-c uitableview

我有一个TableViewController(tvc2),而不是使用ViewController来显示另一个TableViewController(tvc1)的详细信息,我使用了tvc2。基本上,tvc2是一个仅显示细节的分组表。但是我需要在tvc2里面另一个tableView(tv3)这是一个列表。 tableViewCell的每个tableView都应该被另一个细节ViewController所包围。

我的问题是,我可以在tableView内添加TableViewController吗?如果可能,我如何区分numberOfSectionsInTableViewnumberOfRowsInSectioncellRowAtIndexPath方法从TableViewTableViewController

3 个答案:

答案 0 :(得分:8)

,你可以。 创建UITableView时,您需要设置dataSourcedelegate。在您的情况下,两个tableView的dataSourcedelegatetvc2。 在dataSource和delegate方法中,您需要为每个tableView分叉代码(例如,tableView:numberOfRowsInSection:):

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

    if (tableView == tableView1)
    {
        //Your code
    }
    if (tableView == tableView2)
    {
        //Your code
    }
    if (tableView == tableView3)
    {
        //Your code
    }
}

答案 1 :(得分:1)

使用UISearchDisplayController非常简单。您只需要在delegate / dataSource方法中检查tableView

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.tableView) return 1; // tvc1 is self
    if (tableView == tvc2.tableView) return 2;
    return 0;
}

答案 2 :(得分:0)

是的,你必须这样做。示例代码:

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

    NSUInteger section = [indexPath section];
    NSUInteger row = [indexPath row];

    if(row == 0){

            Grupo_DAO *grupo_bd = [[Grupo_DAO alloc] init];
            static NSString *CellTableIdentifier = @"PL";
            UINib *nib = [UINib nibWithNibName:@"PeriodoLectivoView" bundle:nil];
            [tableView registerNib:nib forCellReuseIdentifier:CellTableIdentifier];
            PeriodoLectivo *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
            computerGrupos = [grupo_bd ObtenerGrupos: identAsig];
            Grupo_DTO *grupoprueba = [[Grupo_DTO alloc] init];
            grupoprueba = [computerGrupos objectAtIndex:section];
            cell.Inicio = grupoprueba.inicio;
            cell.Fin = grupoprueba.fin;
            return cell;

    }else{
        ....
    }

我在UITableView的另一个表中添加了第0行。对于UITableViewController内部的表,您必须创建.m和.h文件(在此示例中为@“PeriodoLectivoView” - > ListaPeriodoLectivo.m)。在这个文件中你有方法umberOfSectionsInTableView,numberOfRowsInSection和cellRowAtIndexPath等。

希望它有所帮助。