initwithstyle:reuseIdentifier:未调用

shm*_*lie 46 uitableview ios

我正在创建自己的自定义UITableViewCell用作原型单元的后端.在我的类中,我重写了initwithstyle:reuseIdentifier:方法来进行一些自定义初始化,但我的初始化程序没有被调用.我在其内部的第一行有一个断点,以及一个断点dequeueResusableCellWithIdentifier:.dequeueResusableCellWithIdentifier:调用该方法,它返回一个已启动的单元格,但未达到断点initwithstyle:reuseIdentifier:.任何帮助都会很棒.

jrt*_*ton 83

如果您的单元格是从故事板原型(您已在IB中声明为自定义类)创建的,那么它将不会创建,initWithStyle...而是initWithCoder:像从笔尖加载的任何其他对象一样.如果你有任何设置代码,它应该在那里或在awakeFromNib.

  • 是.AwakeFromNib略有不同,因为在加载了来自nib的所有内容之前不会调用它,但是在单元格的情况下,通常没什么区别. (8认同)
  • 嗯有趣的是,他们建议使用awakeFromNib进行任何初始设置.那么initWithCoder每次都会被调用吗? (4认同)
  • 在文档中是否存在从nib加载时始终使用initWithCoder的状态?你的答案有所帮助,但我想阅读相关的文档,以防我遗漏了其他的东西. (3认同)
  • 好问题!我能找到的最近的是[这里](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/SubclassingNSView/SubclassingNSView.html),在"初始化在Interface Builder中创建的视图实例"下 (3认同)

car*_*onr 12

随着故事板的涉及,一切都在变化.这是被调用的方法.

-(id)initWithCoder:(NSCoder *)aDecoder {
    if ( !(self = [super initWithCoder:aDecoder]) ) return nil;

    // Your code goes here!

    return self;
}
Run Code Online (Sandbox Code Playgroud)