我使用可扩展单元格创建了一个TableView为shown here。在我的例子中,扩展区域包含TextView。我的视图包含一个标签(作为标签文本)及其含义(在文本视图中)。事情很好。
我想出了一个标签可以有多种含义的情况。所以我需要展示所有的意义。因此,每个标签都有很多textview的含义。
我在表格单元格的可扩展部分中添加了一个TableView(在TableCell中使用TextView)。因此,可以在展开的表格单元格中添加X行数,并在单个单元格中添加标记的每个含义。我想设置TextView,TableView和最后的TableViewCell的高度。我尝试了不同的方法,但我无法实现它。你能帮我实现我想要的方式吗?
我想要实现的东西的屏幕截图 -
更新: -
我正在尝试设置属性的cellForRowAtIndexPath方法: -
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Table View TAG = %d ROW = %d", tableView.tag, indexPath.row);
// TABLE VIEW IN THE CELL
if (tableView.tag == 10) { // cell.valuesTv
CannedValueCell *ccell = (CannedValueCell *) [tableView dequeueReusableCellWithIdentifier:@"cannedValueCell"];
if (ccell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CannedValueCell" owner:self options:nil];
ccell = [nib objectAtIndex:0];
}
// Populate valuesTv
ccell.valueTextView.text = [valuesArray objectAtIndex:indexPath.row];
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(valueTextViewTapped)];
[ccell.valueTextView addGestureRecognizer:gestureRecognizer];
//[ccell.valueTextView sizeToFit]; // Makes no difference
// CGRect frame = ccell.valueTextView.frame;
// frame.size.height = ccell.valueTextView.contentSize.height;
// ccell.valueTextView.frame = frame;
NSLog(@"*** TEXTView HEIGHT = %f C_CELL HEIGHT = %f ** TV HEIGHT = %f", ccell.valueTextView.frame.size.height, ccell.frame.size.height, cell.valuesTv.frame.size.height );
// *** TEXTView HEIGHT = 79.000000 C_CELL HEIGHT = 80.000000 ** TV HEIGHT = 80.000000
// AS SET HEIGHT IN STORY BOARD - NO DIFFERENCE
return ccell;
} else {
// MAIN TABLE VIEW
static NSString *cellIdentifier = @"CannedCell";
cell = (CannedCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CannedCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
// Set datasource and delegate for the cell's TableView
cell.valuesTv.dataSource = self;
cell.valuesTv.delegate = self;
.......
}
}
表视图委托方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.cannedTV) {
if (selectedIndex == indexPath.row)
return 150; //(30 + (80 * valuesArray.count));
else
return 30;
}
return 30;
}
}
结果如下: -
我尝试了各种各样的东西,在网上搜索了很多,但找不到以下解决方案: -
请您指导我相应地设定组件的高度并达到要求。任何帮助都非常感谢。感谢。
答案 0 :(得分:1)
表视图和表视图控制器是非常强大的工具。
根据提供的信息,您建议的实施情况令人满意。
UITableViewCell
可以使用表格视图委托方法heightForRowAtIndexPath
动态设置其高度。
您可以使用表格视图委托方法UITableViewCell
回复选择didSelectRowAtIndexPath
的用户。