3

我在使用UITableViewHeaderFooterView类时遇到问题。在我的应用程序中,我想同时使用textLabeldetailTextLabel属性来显示一些文本,但detailTextLabel不显示。据我了解 Apple 的文档,textLabel并且detailTextLabel属性的工作方式应该类似于众所周知的textLabel和类detailTextLabel的属性UITableViewCell。这是我的示例类代码:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tblMain;

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize tblMain;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    tblMain.delegate = self;
    tblMain.dataSource = self;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *reuseIdentifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
    }
    cell.textLabel.text = @"cell is not interesting";
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 3;
}// Default is 1 if not implemented


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    NSString *reuseIdentifier = @"header";
    UITableViewHeaderFooterView *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:reuseIdentifier];
    if (!header) {
        header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:reuseIdentifier];
    }
    header.textLabel.text = @"t";
    header.detailTextLabel.text = @"dtext";
    return header;
}

@end

如果编译此代码,它将显示一个包含三个部分和每个部分一行的表格。我想我会得到左侧带有“t”和右侧带有“dtext”的部分,但错过了“dtext”。我的代码中的错误在哪里?查看detailTextLabel要做什么?UITableViewHeaderFooterView detailTextLabel还可以提供指向财产工作示例的链接。谢谢!

4

2 回答 2

5

如果您在标题中查找UITableViewHeaderFooterView,您会发现它detailTextLabel仅适用于UITableViewStyleGrouped。我猜你正在使用UITableViewStylePlain.

来自UITableViewHeaderFooterView.h

@property(nonatomic, readonly, retain) UILabel* detailTextLabel; // only supported for headers in grouped style
于 2013-05-14T19:40:07.110 回答
1

我相信这是框架或文档中的错误。存在,detailTextLabel但它总是有一个零帧,所以它总是不可见的。因此它总是无用的。

最简单的解决方案是不使用内置标签;将您自己的子视图放入contentView. (不要尝试将您自己的自定义子视图与内置标签混合和匹配。)

于 2013-01-18T16:34:59.467 回答