无法在Interface Builder下拉列表中看到自定义类

时间:2015-02-07 18:58:14

标签: xcode interface-builder

我正在使用Xcode 6.1.1,并且无法从下拉列表中选择我的自定义类。因此,我认为它引起了其他一些相关问题(见下文)。

症状:

  • 使用IB下拉列表选择自定义类时,不会显示任何自定义类。
  • IB_DESIGNABLEIBInspectable不起作用:在IB中选择控件时,不会显示“可设计”状态;没有任何可检查的属性出现。选择定义为IB_DESIGNABLE的视图时,调试选定视图选项将显示为灰色。
  • 按住Ctrl键拖动项目以创建从IB到源代码的连接(IBOutlet和IBAction)偶尔不允许您将连接“删除”到类的源代码中(就好像存在类不匹配)。 (注意:这假设您在“自定义类”部分中手动键入类名。)
  • 怀疑是相关的:WatchKit: unable to find interface controller class

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:3)

有效的方法

  • 试试另一台机器。 (这让我相信机器有一些设置搞砸了。)
  • 重新安装Xcode。
  • 将项目移动到新位置(在本例中为git存储库),修复一次。

我尝试过的东西不起作用(但已经为其他人工作过):

  • 重启Xcode
  • 重新启动计算机(此工作之前,而不是此时)
  • 创建新的故事板。
  • 创建一个新的子类(不只是重命名它)。
  • 通过Apple的单一视图模板创建一个新项目。
  • 清洁项目
  • 删除衍生数据
  • Reindex the project
  • 删除故事板文件上的本地化。

我尝试的东西不起作用:

  • 根据Apple的惯例命名子类(例如,而不是View使用ABCTestView)。
  • 在视图控制器的.h和.m中导入类的.h。
  • 尝试另一个已安装的Xcode版本(测试版6.2)。

相关讨论:

答案 1 :(得分:2)

这不是你的具体情况,但我在类似的“扯掉我的头发”时刻。创建自定义控制器类并使用界面构建器时,必须确保单击正在使用的视图顶部的黄色按钮(视图控制器按钮)。否则,自定义ViewController类将不会显示在身份检查器中的自定义类下拉菜单中。

答案 2 :(得分:1)

在莫名其妙地看到" Designables"行不会出现在Identity Inspector的Custom Class部分中:

之前(没有运行:Designables没有出现,Interface Builder没有渲染我的课程):

IB_DESIGNABLE

@class MyCustomClass;

@interface MyCustomView : UIView

之后(运行:Designables确实出现,Interface Builder确实渲染了我的课程):

@class MyCustomClass;

IB_DESIGNABLE @interface MyCustomView : UIView

因此看起来Xcode对事物的顺序非常敏感。

答案 3 :(得分:1)

这对我有用:blog post

我以某种方式丢失了view引用,所以我所做的就是从一个小圆圈“New Referencing Outlet”拖到.xib和BOOM的主视图中!

答案 4 :(得分:0)

以下是一些可能的解决方案:

  

使用IB下拉列表选择自定义类时,不会显示任何自定义类。

手动输入自定义类的名称,而不是尝试在下拉列表中找到它。有时IB会在您键入时自动填写类的名称,特别是如果您遵循Apple的约定,即YourView作为NSView的子类。

  

IB_DESIGNABLEIBInspectable不起作用:在IB中选择控件时,"可设计"状态不会出现;没有任何可检查的属性出现。选择定义为IB_DESIGNABLE的视图时,调试选定视图选项将显示为灰色。

如果视图未以自定义视图的形式开始,无论是从对象库拖出还是从编辑器>创建的嵌入> ...... ,出于某种原因,更改身份检查器中的自定义类并没有什么不同。要解决此问题,请右键单击.xib并选择打开为>源代码。搜索您要修复的视图(为您的视图提供在IB中可轻松识别的标签将使这更容易)。你会找到这样一个条目:

<view ... customClass="YourView">
    ...
</view>

view更改为customView,以便条目类似于:

<customView ... customClass="YourView">
    ...
</customView>

然后再次右键单击.xib并选择打开为&gt; Interface Builder XIB文档,您现在应该在IB的Identity检查器中的自定义类下看到 Designables 条目,调试所选视图将在编辑器菜单下提供。

  

按住Ctrl键拖动项目以创建从IB到源代码的连接(IBOutlet和IBAction),但偶尔也不允许您删除&#34;删除&#34;连接到类的源代码(好像存在类不匹配)。 (注意:这假定您在“自定义类”部分中手动键入类名。)

听起来不是您的确切问题,但在双显示器/多显示器设置中,如果IB与源代码窗口位于不同的显示器上,请转到 Apple菜单&gt;系统偏好设置...&gt;任务控制并取消选中显示具有单独的空格。这可能会产生一些视觉上的副作用(比如窗口阴影会渗透到其他显示器中),但它会解决ctrl拖动到单独监视器上的问题。