在界面生成器中使用现有的自定义 UIView

Posted

技术标签:

【中文标题】在界面生成器中使用现有的自定义 UIView【英文标题】:Using existing custom UIView in interface builder 【发布时间】:2013-04-15 10:11:55 【问题描述】:

我创建了一个 UIView 子类,因为我需要一些自定义的东西。

然后,我在我的一个 xib 上添加了一个 UIView,并将 UIView 的类更改为我的自定义类。当我运行时,它不会实例化自定义类。

我该怎么办?将使用什么构造函数来实例化自定义类?

【问题讨论】:

没有自定义构造函数,你如何检查没有启动? 【参考方案1】:

xib 将被实例化为

- (id)initWithCoder:(NSCoder *)decoder

如果您依赖xib 中的连接和其他对象可用,那么您也可以将代码添加到

- (void)awakeFromNib

这是当对象... is guaranteed to have all its outlet and action connections already established.


要处理代码重复,您可以执行以下操作

- (instancetype)initWithFrame:(CGRect)frame

  self = [super initWithFrame:frame];
  if (self) 
    [self commonInit];
  
  return self;


- (instancetype)initWithCoder:(NSCoder *)aDecoder

  self = [super initWithCoder:aDecoder];
  if (self) 
    [self commonInit];
  
  return self;


- (void)commonInit

  // any common setup

【讨论】:

【参考方案2】:

从 XIB 创建 UIView 时调用的方法是

- (id) initWithCoder:(NSCoder *)aCoder

【讨论】:

以上是关于在界面生成器中使用现有的自定义 UIView的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何获取刚刚在界面生成器中设置的 UIView 的框架

ios UIview 在视图中

界面生成器中的 iOS Swift 3.0 自定义视图导致重新编译和错位

Xcode 界面生成器 Segue 动画

iOS:从 UIView 创建 XIB

如何以编程方式添加尺寸类自定义