我已经在网上查看了其他问题以及许多其他在线资源,但无法找到解决方案。我有3行,无论我做什么,它们都保持在tableview中定义的宽度。第一个是我想要的,但第二个和第三个我不能给出自定义高度。
以下是我的代码:
#import "DetailTableViewController.h"
#import "EventDetailTableViewCell.h"
#import "EventDescriptionTableViewCell.h"
#import "EventMapTableViewCell.h"
@interface DetailTableViewController ()
@end
@implementation DetailTableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
static NSString *CellIdentifier = @"headerCell";
EventDetailTableViewCell *headerCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
headerCell.headerImage.image = [UIImage imageNamed:@"img4.png"];
return headerCell;
} else if (indexPath.section == 1) {
static NSString *CellIdentifier = @"descriptionCell";
EventDescriptionTableViewCell *descriptionCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
descriptionCell.descriptionImage.image = [UIImage imageNamed:@"img2.png"];
return descriptionCell;
} else {
static NSString *CellIdentifier = @"mapCell";
EventMapTableViewCell *mapCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
return mapCell;
}
}
#pragma mark - Helper Methods
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 1) {
return @" ";
} else if (section == 2) {
return @" ";
} else {
return nil;
}
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
return 222;
} else if (indexPath.row == 1) {
return 80;
} else {
return 100;
}
}
@end
答案 0 :(得分:2)
我认为heightForRowAtIndexPath
中的代码存在错误。您一直在为大多数TableView委托和dataSource方法使用indexPath.section
。所以,我相信您也想在indexPath.section
上使用heightForRowAtIndexPath
。
以下代码应该有效。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 1) {
return 222;
} else if (indexPath.section == 2) {
return 80;
} else {
return 100;
}
}