无法识别的选择器 - 自定义UITableView节标题

时间:2012-06-23 11:43:55

标签: uitableview header unrecognized-selector

我正在尝试为UITableView Section Header创建自定义UIView(.h .m& .xib)。

目标是我可以使用以下行传递标题:

sectionHeaderView.sectionLabel.text = @"SOME TEXT";

然而,这总是会导致以下错误:

[UIView sectionLabel]: unrecognized selector sent to instance 0x6d3f6f0

当我将其声明为DUSettingsSectionView时,为什么认为这是一个UIView?这是代码。希望有人能指出我正确的方向。

====代码====

来自我的UIViewController

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 16;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
DUSettingsSectionView *sectionHeaderView = [[DUSettingsSectionView alloc] init];
//    sectionHeaderView.sectionLabel.text = @"SOME TEXT";
return sectionHeaderView;
}

来自DUSettingsSectionView.h

#import <UIKit/UIKit.h>
@interface DUSettingsSectionView : UIView {
    UILabel *sectionLabel;
}
@property (nonatomic, strong) IBOutlet UILabel *sectionLabel;
@end

来自DUSettingsSectionView.m

#import "DUSettingsSectionView.h"
@implementation DUSettingsSectionView
@synthesize sectionLabel;
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"DUSettingsSectionView" owner:self options:nil];
    self = [nibArray objectAtIndex:0];
}
return self;
}
@end

sectionLabel完全连接在.xib中,.xib设置为DUSettingsSectionView类。

1 个答案:

答案 0 :(得分:0)

您似乎在DUSettingsSectionView的initWithFrame:方法中加载.xib但在init内调用了(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 要解决此问题,请将(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section更改为以下内容:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
  DUSettingsSectionView *sectionHeaderView = [[DUSettingsSectionView alloc] initWithFrame:frame];
  sectionHeaderView.sectionLabel.text = @"SOME TEXT";
  return sectionHeaderView;
}