iOS null Interface Builder 对象

Posted

技术标签:

【中文标题】iOS null Interface Builder 对象【英文标题】:iOS null Interface Builder objects 【发布时间】:2011-12-26 14:27:46 【问题描述】:

G'day 伙计们

在这个方法中……

- (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];

作用于footerViewfooterText 的行可以工作,但作用于headerViewheaderText 的行不行。这个screen shot 展示了我是如何在 IB 中连接的。 debug 行(Marcus Zarra 的 NSLog 脚本)告诉我 headerViewheaderText 从一开始就为空,而 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, 佩德罗

【问题讨论】:

您是否正在检查您的 theTitleText 参数以查看该值是什么? 第一个调试行就是这样做的,它是预期的文本。 【参考方案1】:

你用什么方法调用你的 -(void)configureTableWithTitle: about: 方法? 你确定是在 viewDidLoad: 之后吗?

【讨论】:

我在两个子类的 init 方法中调用了它。将其移至 viewDidLoad 已修复它。谢谢:)

以上是关于iOS null Interface Builder 对象的主要内容,如果未能解决你的问题,请参考以下文章

Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null

《iOS Human Interface Guidelines》——System Button

Android报错提示Attempt to invoke interface method ‘int java.util.List.size()‘ on a null object reference

《iOS Human Interface Guidelines》——Popover

iOS Human Interface Guidelines

《iOS Human Interface Guidelines》——System Button