【问题标题】:Custom view in nib instantiated as parent typenib 中的自定义视图实例化为父类型
【发布时间】:2010-06-11 14:46:38
【问题描述】:

我创建了一个继承自 UILabel 的自定义类。我在我的笔尖中放置了一个 UILabel 并将标签的类设置为我的自定义类。但是,当调用viewDidLoad 方法时,视图属于UILabel 类,而不是我的自定义类。

有什么想法吗?

【问题讨论】:

  • 您在自定义类中覆盖了哪些初始化方法?
  • 我尝试覆盖drawRectdrawTextInRect。但是,两者都没有被调用,这导致我在视图控制器的viewDidLoad 中添加了一行:NSLog(@"label type: %@", [self.label class]);,响应是“标签类型:UILabel”。
  • 我认为你需要实现initWithFrame:
  • 是的,我也实现了initWithFrame。我只是忘了提。

标签: iphone interface-builder uilabel


【解决方案1】:

我能够在测试项目中创建我的 CustomLabel 实例。我所做的不同之处在于,我没有拖动 UILabel,而是将 CustomLabel 的一个实例拉入视图。

我针对最新 sdk 的目标实现了 awakeFromNib,如下所示。

-(void)awakeFromNib
{
    [self setText:[NSString stringWithFormat:@"%@",[self class]]];
}

- (void)drawTextInRect:(CGRect)rect // called as expected
{
    NSLog(@"drawTextInRect: called");
    [super drawTextInRect:rect];
}

几个谜团... 我在 CustomLabel 中实现了 init 和 initWithFrame,从 nib 加载视图的机器都没有调用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多