【问题标题】:Custom UIView in Interface Builder / Cross PlatformInterface Builder 中的自定义 UIView / 跨平台
【发布时间】:2013-02-22 21:01:53
【问题描述】:

我有一个适用于 iOS 和 Mac OS 的控件库。它的实现如下:

#if TARGET_OS_IPHONE

#import <UIKit/UIKit.h>

@interface MyCustonControl : UIControl
...
@end

#else

#import <Cocoa/Cocoa.h>

@interface MyCustomControl : NSControl
...
@end

#endif

如果我在视图控制器中构建控件,这可以正常工作。如果我尝试使用 Interface Builder,我永远无法将 UIView 的自定义类设置为 MyCustomControl。它显示在列表中,我可以输入它,但如果我关注其他内容然后再次关注视图,自定义类已恢复为 UIView。

我在两个实现中都实现了 initFromCoder,只是为了确保不是那样。

有什么办法解决这个问题吗?是 IB 很奇怪还是我应该以不同的方式定义我的班级?

【问题讨论】:

    标签: xcode cocoa-touch cocoa interface-builder


    【解决方案1】:

    您不能将自定义类设置为您的控件,因为自定义类需要是 UIView/NSView 的子类,而 UIControl/NSControl 是 UIView/NSView 的父类。您应该将定义更改为

    @interface MyCustomControl : UIView
    ...
    @interface MyCustomControl : NSView
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 2014-03-28
      相关资源
      最近更新 更多