2012-06-23 5 views
0

Я пытаюсь создать пользовательский UIView (.h .m & .xib) для заголовка раздела UITableView.Unrecognized Selector - Пользовательские заголовки секции UITableView

Цель состоит в том, что я могу передать заглавию, используя следующую строку:

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

Однако это всегда вызывает следующее сообщение об ошибке:

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

Почему это думать, что это UIView, когда Я объявляю его DUSettingsSectionView? Вот код. Надеюсь, кто-то может указать мне в правильном направлении.

==== ==== КОД

Из моего 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 полный y подключен внутри .xib, а .xib установлен в класс DUSettingsSectionView.

+0

Показывает закомментированное назначение в вашем 'viewForHeaderInSection:' метод ... это тот, который вызывает ошибку? –

+0

Да, если я раскомментирую строку назначения, я получаю следующую ошибку: - [UIView sectionLabel]: нераспознанный селектор отправлен в экземпляр 0x6d3f6f0 2012-06-23 15: 36: 13.891 du [4108: 207] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [UIView sectionLabel]: непризнанный селектор, отправленный в экземпляр 0x6d3f6f0' – Richard

+0

Попробуйте 'NSLog (@" Nib:% @ ", nibArray);' в 'initWithFrame:', чтобы увидеть, что он думает, что загружается. –

ответ

0

кажется, что вы загружаете .xib внутри initWithFrame: метода DUSettingsSectionView но вы называете 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; 
} 
+0

Еще та же проблема, после того, как с помощью initWithFrame: Наконечник: ( ">" ) 2012 -06-23 16: 16: 15.801 du [4545: 207] - [UIView sectionLabel]: непризнанный селектор отправлен в экземпляр 0x6d54d40 2012-06-23 16: 16: 15.802 du [4545: 207] *** Прекращение действия приложения к исключенному исключению «NSInvalidArgumentException», причина: '- [UIView sectionLabel]: непризнанный селектор, отправленный экземпляру 0x6d54d40' – Richard

+0

FIXED: Действительно извините, ребята. Проблема была вызвана только интерфейсом Builder. Я установил подключения к «Владелец файла». Как только я удалил их и восстановил соединения через Views, все сработало. Затем NIB был загружен правильно. Спасибо за полезные указания. – Richard

Смежные вопросы