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