【问题标题】:Storyboard initializing UIView instead of my custom class故事板初始化 UIView 而不是我的自定义类
【发布时间】:2018-11-16 13:05:51
【问题描述】:

我有一个名为NumberView 的自定义类,它是UIScrollView 的子类。我将UIView 放到我的故事板上,并将类更改为NumberView:

然后我为我的ShotTraceViewController 班级创建了一个出口:

@interface ShotTraceViewController () 
@property (weak, nonatomic) IBOutlet NumberView *numberView;
@end

我在NumberView.h 和NumberView.m 中定义了一些方法:

.h:

@interface NumberView : UIScrollView
@property (weak, nonatomic) id<NumberViewDelegate> number_delegate;
-(void)setTotalBtns:(int)total;
...
@end

.m:

@interface NumberView ()
@end
@implementation NumberView {
}
-(instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    return self;
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    return self;
}
-(void)setTotalBtns:(int)total {
    NSLog(@"Setting buttons");
}
@end

但是当我尝试从我的ShotTraceViewController 拨打[self.numberView setTotalBtns:3]; 时。我得到一个例外:

-[UIView setTotalBtns:]:无法识别的选择器发送到实例 0x104fad3e0

哇!不对,应该是NumberView 而不是UIView!我做错了吗?

我还注意到 initWithFrame 和 initWithCoder 都没有被调用。

【问题讨论】:

  • 在您从 Storyboard 初始化时,不应调用 initWithFrame:,但可能会调用 initWithCoder:。可以发一下你的截图吗?错误似乎并没有表明您将其类正确地放入视图中。
  • 已更新。抱歉,不知何故我的屏幕截图被分离了。
  • “但是当我尝试从我的 ShotTraceViewController 调用 [self.numberView setTotalBtns:3];”时,请在实际上下文中展示您是如何做到的。也请届时登录self.numberView,以便我们进一步了解它是什么。

标签: ios objective-c uiview uistoryboard


【解决方案1】:

我不知道为什么会这样,但是取消选中类选择下方的 Inherit Module from Target 按钮可以解决所有问题。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多