如何将tableview放在另一个tableView的单元格中?任何的想法?

时间:2014-02-20 08:55:36

标签: ios objective-c ipad uitableview

在tableView的一个单元格中,我想放另一个tableView(例如toyTable)。任何人都可以帮助我吗?我在我的项目中创建了一个tableView(主要的)和另一个tableview。现在在我的主tableView中,我有很多单元格,在其中一个单元格中,我希望另一个表格(toyTable)出现在单元格中。

4 个答案:

答案 0 :(得分:1)

将表格视图放在表格单元格中是一个糟糕的设计。请将toyTable插入主表视图的部分

答案 1 :(得分:1)

假设你有两张桌子。

为两者制作属性

// This one might be connected as an outlet with your storyboard
@property (nonatomic) IBOutlet UITableViewController *mainTable;
// This one should be in the .m file
@property (nonatomic) UITableViewController *toyTable;

为每个实现委托和数据源协议方法。

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.mainTable) {
        return 10;
    } else {
        return 5;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == self.mainTable) {
        // If this is the indexPath for the cell that should contain 
        // the nested table view, initialize your self.toyTable, set 
        // datasource and delegate etc.
        // Else configure your default outer cell
    } else {
        // Configure the cells of your self.toyTable;
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == self.mainTable) {
        // If this is any normal outer cell
        return UITableViewAutomaticDimension;
        // If this is the outer cell that contains self.toyTable
        return some bigger value (if desired)
    } else {
        // The height of the inner cell
        return UITableViewAutomaticDimension;
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == self.mainTable) {
        // If this is the outer cell that contains self.toyTable
        // You should ignore the selection
        // Else handle it according to your needs
    } else {
        // Handle click on inner cell
    }
}

如果您使用静态表格视图作为mainTable,则可以直接将表格视图拖动到其中一个静态单元格上,并为其定义原型单元格等。

答案 2 :(得分:0)

为什么你这样做是因为嵌套tableview是一个坏主意,而UITableview已经有了扩展和折叠属性。 请使用以下链接参考http://www.cocoanetics.com/2011/03/expandingcollapsing-tableview-sections/

答案 3 :(得分:0)

在cellForRowAtIndexPath中添加该表并执行如下代码:

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

   if (tableView == mainTable) {
     //do this for main table
   }
   else { 
     //do this for second table
   }

}