Я не могу понять, как получить это UITableView
для отображения.Как я могу отобразить этот UITableView?
Код создает таблицу полностью программно, за исключением наконечника.
Nib - это простая ячейка, которая работает в другом UITableView
s в том же приложении.
Когда представление таблицы создается и добавляется как подвид к view
и reloadData
называют то numberOfSectionsInTableView:
и tableView:numberOfRowsInSection:
оба называются. Они оба возвращают 1
. (Я проверил в отладчике.)
Однако tableView:cellForRowAtIndexPath:
никогда не вызывается.
Я добавляю tableView в его родительский вид с NSLayoutConstraint, который заставляет его высоту, но в этом месте ничего не отображается.
Отладчик иерархии представления не показывает ничего в этом месте и что на столе нет представления.
Приложение работает без ошибок и сбоев.
Примите во внимание вашу помощь.
@interface MyViewCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *button;
@end
@implementation MyViewCell
@end
@interface MyDataTableEntry : NSObject
@property (nonatomic, strong) NSString* title;
@end
@implementation MyDataTableEntry
@end
@interface MyDataTable : NSObject <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) UITableView *tableView;
@property (strong, nonatomic) NSArray *rows;
@property (strong, nonatomic) UINib* nib;
@end
@implementation MyDataTable
- (UINib*)getAndRegisterNib:(NSString*)reuseIdentifier {
UINib* nib = [UINib nibWithNibName:reuseIdentifier bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:reuseIdentifier];
return nib;
}
- (id)initWithRows:(NSArray*) rows andView:(UIView*)view {
if (self = [super init]) {
self.rows = rows;
self.tableView = [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain];
self.nib = [self getAndRegisterNib:@"PrototypeCell"];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor grayColor];
}
return self;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.rows.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PrototypeCell" forIndexPath:indexPath];
MyDataTableEntry* entry = self.rows[indexPath.row];
[cell.button setTitle:entry.name forState:UIControlStateNormal];
cell.button.backgroundColor = [UIColor blueColor];
return cell;
}
@end
Вот отрывок, который создает таблицу:
MyDataTableEntry* entry = [[MyDataTableEntry alloc] init];
entry.title = @"hello";
self.dataTable = [[MyDataTable alloc] initWithRows:@[entry] andView:self.view];
[self.view addSubview:self.dataTable.tableView];
[self.dataTable.tableView setNeedsLayout];
[self.dataTable.tableView layoutIfNeeded];
[self.dataTable.tableView reloadData];
Где вы добавляете табличное представление в супервизор? Пожалуйста, покажите, что код – Paulw11
@john Кешью, пожалуйста, назначьте строки массива = [NSArray arrayWithObjects: @ "A", @ "B", @ "C", @ "D", @ "E", nil]; . после получения таблицы. – iOS
@ DarjiJigar вы могли заставить его работать? –