代码之家  ›  专栏  ›  技术社区  ›  DefenestrationDay Tom Jefferys

如何初始化UITableView?从XIB和以编程方式?

  •  0
  • DefenestrationDay Tom Jefferys  · 技术社区  · 16 年前

    我有一个简单的要求,我花了很多时间(尴尬地)。。

    我对UITableView进行了子分类,以添加一些功能。这些新特性需要NSMutableSet之类的东西,它们需要分配/初始化。

    - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style {
    

    我从苹果文档中了解到这一点是正确的,但这并没有被调用(由代码上的断点确定)。

    我正在使用IB,并且已经拖动了一个 UITableView 将其类更改为我的新子类。没有 UITableViewController 我也尝试过:

    - (void)loadView {
    - (id)init {
    - (id)initWithFrame:(CGRect)frame {
    

    没有成功。我希望这个类能够与IB一起使用,并且在将来以编程的方式使用。除了此初始化的位置之外,其他一切都正常工作。。

    2 回复  |  直到 9 年前
        1
  •  6
  •   Paul Scott    16 年前

    当对象从XIB文件加载时,它们会 -(id)initWithCoder:(NSCoder*)coder .

    -initWithFrame:style: -initWithCoder:

    保持这两个同步可能是一件痛苦的事情,因此大多数人喜欢将init内容分解成一个私有方法,通常称为 -commonInit .

    您可以在一些Apple示例代码中看到这方面的一个示例: HeadsUpUI .

    - (void)commonInit
    {
        self.userInteractionEnabled = YES;
    }
    
    - (id)initWithFrame:(CGRect)frame
    {
        if (self = [super initWithFrame:frame])
        {
            [self commonInit];
        }
        return self;
    }
    
    - (id)initWithCoder:(NSCoder *)aDecoder
    {
        if (self = [super initWithCoder:aDecoder])
        {
            [self commonInit];
        }
        return self;
    }
    
        2
  •  1
  •   NSResponder    16 年前

    您正在向UITableView添加什么功能?您确定您想做的事情不能通过委托方法或使用自定义单元格类来完成吗?