在 xib 文件中使用拖放时将调用 UIView 的哪个 init 方法
Posted
技术标签:
【中文标题】在 xib 文件中使用拖放时将调用 UIView 的哪个 init 方法【英文标题】:Which init method for UIView will be called when using drag and drop in xib file 【发布时间】:2014-09-28 05:18:43 【问题描述】:这里是自定义集合视图,标签下方是(我设计的评级视图)。
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
[self initGrayStarView];
[self initYellowStarView];
[self initRatingLabel];
return self;
但我发现每次评分视图都没有出现(图像视图和标签出现)。然后我发现是因为我没有调用评级视图的init方法,所以它是nil,但是为什么呢? 这是init方法。
但它从不调用它,它只调用 layoutSubview 方法。
【问题讨论】:
在故事板调用 initWithCoder 中创建的视图: How to write init method for custom UIView class with xib file的可能重复 【参考方案1】:考虑这种模式...
-(id)initWithFrame:(CGRect)frame
if (self = [super initWithFrame:frame])
[self _setup];
return self;
-(id)initWithCoder:(NSCoder *)aCoder
if (self = [super initWithCoder:aCoder])
[self _setup];
return self;
-(void)_setup
blah;
blah;
blah;
尝试“了解正在发生的事情”,但如果您刚刚开始,这将帮助您度过难关。希望对你有帮助
【讨论】:
虽然我已经找到了解决问题的方法,但这比我想要的要多,我真的帮了很多忙。【参考方案2】:它在 awakeFromNib: 方法中。在您的实现文件中覆盖它,如下所示:
- (void)awakeFromNib
[super awakeFromNib];
// Initialization code
[self setupStuff];
【讨论】:
以上是关于在 xib 文件中使用拖放时将调用 UIView 的哪个 init 方法的主要内容,如果未能解决你的问题,请参考以下文章
在ANDROID中相互拖放时合并Recyclerview中的项目?
在使用拖放时,我可以让 Treeview 展开用户悬停的节点吗?