У меня есть UITableView с настраиваемыми ячейками. Высота ячеек в этом представлении главной таблицы динамически вычисляется с помощью ограничений автоматической компоновки. Теперь я хочу добавить подчиненный UITableView в ячейку представления основной таблицы. Просьба пояснить, как это сделать. (Примеры проектов также могут быть очень полезными).Достижение динамической высоты для UITableView (ведомого), которое добавляется как подчиненный внутри пользовательской ячейки другого UITableView (Master) с динамической высотой
0
A
ответ
0
Найдено решение.
#import "TableViewController.h"
#import "CustomCellTableViewCell.h"
@interface TableViewController()
{
NSMutableArray *array;
NSString *cellID;
}
@end
@implementation TableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
array = [[NSMutableArray alloc]initWithObjects:@"Hi",@"13.861970 dsdlkdksjdksksdjkljkdlsjkldsjk dsdlkdksjdksksdjkljkdlsjkldsjkdsdlkdksjdksksdjkljkdlsjkldsjkdsdlkdksjdksksdjkljkdlsjkldsjk", @"Latitude",@"100.504250", @"Longitude",@"50 kph", @"Speed",@"1000 meters", @"Altitude",@"12/04/2010", @"Date",@"05:45 PM", @"Time",@"North west", @"Course", nil];
cellID = @"cellID";
[self.tableView setRowHeight:UITableViewAutomaticDimension];
[self.tableView setEstimatedRowHeight:50];
[self.tableView registerClass:[CustomCellTableViewCell class] forCellReuseIdentifier:cellID];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
#warning Incomplete implementation, return the number of sections
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section {
#warning Incomplete implementation, return the number of rows
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if (indexPath.row == 1)
{
[cell addTableWithText:[array objectAtIndex:indexPath.row]];
}
else
{
[cell setCellText:[array objectAtIndex:indexPath.row]];
}
return cell;
}
CustomCellTableViewCell реализован следующим образом.
#import <UIKit/UIKit.h>
@interface CustomCellTableViewCell : UITableViewCell<UITableViewDelegate,UITableViewDataSource>
{
UILabel *cellLabel;
UITableView *table;
NSMutableArray *tableData;
}
-(void) setCellText:(NSString *) text;
-(void) addTableWithText:(NSString *) text;
@end
#import "CustomCellTableViewCell.h"
#import "Masonry.h"
@implementation CustomCellTableViewCell
-(void) setCellText:(NSString *) text
{
if (cellLabel == nil)
{
cellLabel = [[UILabel alloc]init];
[cellLabel setNumberOfLines:0];
[cellLabel setBackgroundColor:[UIColor redColor]];
[self addSubview:cellLabel];
[cellLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(10, 10, 10,10));
}];
}
[cellLabel setText:text];
}
-(void) addTableWithText:(NSString *) text
{
tableData = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];
if (table == nil)
{
table = [[UITableView alloc]init];
[table setDelegate:self];
[table setDataSource:self];
[table setScrollEnabled:NO];
[table setEstimatedRowHeight:40];
[table setRowHeight:UITableViewAutomaticDimension];
[self addSubview:table];
[table registerClass:[CustomCellTableViewCell class] forCellReuseIdentifier:@"cell"];
[table mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.greaterThanOrEqualTo(self);
make.left.equalTo(self).with.offset(10);
make.right.equalTo(self).with.offset(-10);
make.bottom.equalTo(self).with.offset(-10);
}];
}
if (cellLabel == nil)
{
cellLabel = [[UILabel alloc]init];
[cellLabel setNumberOfLines:0];
[cellLabel setBackgroundColor:[UIColor redColor]];
[self addSubview:cellLabel];
[cellLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).with.offset(10);
make.left.equalTo(self).with.offset(10);
make.right.equalTo(self).with.offset(-10);
make.bottom.equalTo(table.mas_top).with.offset(-10);
}];
}
else
{
[cellLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self).with.offset(10);
make.left.equalTo(self).with.offset(10);
make.right.equalTo(self).with.offset(-10);
make.bottom.equalTo(table.mas_top).with.offset(-10);
}];
}
[cellLabel setText:text];
[table layoutIfNeeded];
CGFloat height = table.contentSize.height;
[table mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.greaterThanOrEqualTo(self);
make.left.equalTo(self).with.offset(10);
make.right.equalTo(self).with.offset(-10);
make.bottom.equalTo(self).with.offset(-10);
make.height.equalTo([NSNumber numberWithFloat:height]);
}];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [tableData count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCellTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
[cell setCellText:[tableData objectAtIndex:indexPath.row]];
return cell;
}
@end
Смежные вопросы
- 1. UITableView с динамической высотой внутри UIScrollView:
- 2. iOS: UITableView внутри UITableViewCell с динамической высотой ячейки
- 3. Содержимое динамической ячейки UITableView
- 4. UITableView с динамической высотой в UIPopoverController
- 5. UITableView с динамической высотой в Swift
- 6. Реализация динамической высоты на UITableView
- 7. Проблема с динамической высотой для пользовательской ячейки таблицы. UIlabel
- 8. UITableView пробелы при использовании динамической высоты строки
- 9. UITableview, вертикально центрирует объект ячейки с динамической высотой?
- 10. Проблема динамической высоты ячейки в UitableView с использованием AutoLayout?
- 11. Static UITableView, сделать одну ячейку с динамической высотой в Swift
- 12. Настольные ячейки с динамической высотой
- 13. UITableView с динамической высотой с ограничениями автоматической компоновки
- 14. Как увеличить/уменьшить размер UICollectionViewCell, когда внутри UITableview с динамической высотой ячейки?
- 15. Пользовательский вид с динамической высотой как заголовок UITableView ios xcode
- 16. UITableViewCell с динамической высотой IOS
- 17. Как обрабатывать UITableView с разной высотой ячейки?
- 18. Вычислить высоту коллекцииViewCell с динамической высотой
- 19. Настройка динамической высоты для UITableViewCell с единственным изображением (переменной высотой) внутри него
- 20. Как сделать ограничения для UITableView с несколькими ячейками со статической и динамической высотой?
- 21. Таблица с динамической высотой строки
- 22. Борьба с форматированием динамической высоты строки в UITableView
- 23. UITableview ошибка высоты ячейки
- 24. Autolayout с динамической высотой
- 25. Подвижность динамической высоты в UITableViewCell
- 26. Динамический UITableView внутри статической ячейки
- 27. Содержимое пользовательской динамической высоты UITableViewCell в iOS8 имеет разную ширину
- 28. Stickyfooter с динамической высотой
- 29. Как создать очень простой UITableView программно с динамической высотой ячейки и автоматической компоновкой?
- 30. Несколько UILabels в UITAbleViewCell с динамической высотой