нулевые объекты Interface Builder для iOS - PullRequest
0 голосов
/ 26 декабря 2011

G'day Folks

В этом методе ...

- (void)configureTableWithTitle:(NSString *)theTitleText about:(NSString *)theAboutText
{
    debug(@"configuring with headerText: %@", theTitleText);
    debug(@"headerView description: %@", [headerView description]);
    debug(@"headerText description: %@", [headerText description]);
    CGPoint titleOrigin = headerText.frame.origin;
    CGSize titleSize = headerText.frame.size;
    [headerText setText:theTitleText];
    debug(@"headerText: %@", [headerText text]);
    CGSize newTitleSize = [theTitleText sizeWithFont:[headerText font] constrainedToSize:CGSizeMake(titleSize.width, 9999)];
    [headerText setFrame:CGRectMake(titleOrigin.x, titleOrigin.y, titleSize.width, newTitleSize.height)];
    int titleDelta = newTitleSize.height - titleSize.height;
    CGSize titleViewSize = headerView.frame.size;
    [headerView setFrame:CGRectMake(0, 0, titleViewSize.width, titleViewSize.height + titleDelta)];

    [[self tableView] setTableHeaderView:headerView];

    debug(@"footerView description: %@", [footerView description]);
    debug(@"footerText description: %@", [footerText description]);
    CGPoint aboutOrigin = footerText.frame.origin;
    CGSize aboutSize = footerText.frame.size;
    [footerText setText:theAboutText];
    CGSize newAboutSize = [theAboutText sizeWithFont:[footerText font] constrainedToSize:CGSizeMake(aboutSize.width, 9999)];
    [footerText setFrame:CGRectMake(aboutOrigin.x, aboutOrigin.y, aboutSize.width, newAboutSize.height)];
    int aboutDelta = newAboutSize.height - aboutSize.height;
    CGSize aboutViewSize = footerView.frame.size;
    [footerView setFrame:CGRectMake(0, 0, aboutViewSize.width, aboutViewSize.height + aboutDelta)];

    [[self tableView] setTableFooterView:footerView];
}

строки, которые действуют на footerView & footerText, работают, но те, которые действуют на headerView & headerText, не работают. Этот снимок экрана показывает, как у меня все подключено в IB. Строки debug (скрипт NSLog Маркуса Зарры) говорят мне, что headerView & headerText равны нулю с самого начала и что headerText.text равна нулю после попытки установить текст. В файле eader у меня есть ...

@interface MFProgramDetailView : UITableViewController <UITableViewDelegate>
{
    UIView *headerView; 
    UIView *footerView; 
    UILabel *headerText;
    UILabel *footerText;
    UITableView *detailTable;
}

@property (nonatomic, retain) IBOutlet UIView *headerView;
@property (nonatomic, retain) IBOutlet UIView *footerView;
@property (nonatomic, retain) IBOutlet UILabel *headerText;
@property (nonatomic, retain) IBOutlet UILabel *footerText;
@property (nonatomic, retain) IBOutlet UITableView *detailTable;

Я вырываю свой слух из-за этого. Я проверил и перепроверил и не вижу ничего неуместного, я сравнил это несколько раз с другим классом, используя аналогичный метод (но с элементами, которые можно жонглировать в заголовке) и не вижу разницы.

Кто-нибудь может подсказать, как я это неправильно понял? Учитывая, что это то, что я сделал несколько раз, знакомство с Пэпсом породило слепоту.

Приветствия и TIA, Pedro

1 Ответ

0 голосов
/ 26 декабря 2011

В каком методе вы вызываете ваш - (void) configureTableWithTitle: about: метод? Вы уверены, что это после viewDidLoad:?

...