故事板uiviewcontroller,“自定义类”不显示在下拉菜单中
我有我在我的应用程序故事板创build的UIViewController,以及我添加到项目(并正确在我的目标的编译阶段)的自定义UIViewController子类。 但是,当我去在Storyboard的视图控制器上设置“自定义类”属性时,我的自定义类不会显示在列表中。
- 检查该类是我的应用程序的目标的一部分,而不是testing'
- 双检查它是正确的UIViewController的子类
- 编译的程序只是为了确保xcode使用最新的信息
- 重新启动xcode
什么会导致我的class级不在“自定义class级”下拉菜单中显示?
两种方式,我发现解决问题,但他们是解决问题的方法。 1.只需在文本框中input视图控制器的名称,或者2.closures项目,然后重新打开它,并在项目初始化时将文件放在列表中。
如果你仍然有问题或者对于那些可能有同样问题的人:
确保在故事板上select“ViewController”而不是“View”(在点击故事板中的视图时自动选中)。 这两者之间的区别是,当视图控制器被选中,一个蓝色的矩形popup你的应用程序。 为确保select视图控制器,请打开文档大纲并直接在故事板层次结构中select它。
我将尝试以下内容:
- 检查包含类的实现的文件是
build phases
一部分(在target
下,然后部分build phases
)。 如果不是构build阶段的一部分,添加.m
文件。 - 1后重新启动XCode。
您可以通过编辑Storyboard的XML来解决这个问题。
-
在“ 项目导航器”面板中右键单击
My.storyboard
条目,然后select打开方式 – >源代码菜单选项。 在XML中查找您的视图控制器条目,并添加属性customClass="MyController"
。 -
保存故事板。
-
再次右键单击Project Navigator面板中的
My.storyboard
条目,然后selectOpen As-> Interface Builder – Storyboard菜单选项。
自定义类条目现在将包含您的MyController
类名称。
确保你的类inheritance自UIViewController。
@interface ClassName : UIViewController
我遇到了和这个问题一样的问题。 但是,没有任何build议的答案为我确定了。 我的项目没有任何警告或错误编译好,但在.h文件中没有“出口”指标,表明我的网点已经链接到故事板元素。
另外,尝试在我的代码中创build新的sockets,通过右键单击并拖动到我的头文件中,不会将我的头源识别为此操作的潜在目标。 而且,我的类没有出现在ViewController属性检查器面板的Custom-Class下拉菜单中。
然而,项目编译OK。
更仔细的检查表明,我以下面的方式定义了我自己的class级。
@interface KJBMainDataViewTrackConMk2<UIScrollViewDelegate> : UIViewController
这显然编译很好。
但是,如果这改变到以下,(移动协议到最后)…
@interface KJBMainDataViewTrackConMk2 : UIViewController<UIScrollViewDelegate>
然后,一切都会发生。 所有sockets突然被指示为与故事板元件“连接”。 然后右键拖动开始再次工作,我的自定义类出现在故事板ViewController的属性检查器面板的自定义类下拉菜单中!
这里的其他答案可能代表了这种情况的最可能的原因,但是我觉得至less应该提到这另一个潜在的原因。
在Xcode 8中,我的一些类有错误的path(区分大小写)指定的文件位置。
MyProject/mysubdirectory/MyViewController.xib (.m, .h)
VS:
MyProject/MySubdirectory/MyViewController.xib (.m, .h)
真的不知道它是如何在这个状态下结束的,但是我的项目展示了与上面完全一样的行为(在IB中没有展示出口/动作),并修复了这个问题。
我固定了这两种不同的方式。 一种方法是我打开.pbxproj文件并手动修复区分大小写的问题。 另一种方法是通过点击文件的文件检查器选项卡的标识和types部分下的文件夹图标,然后在那里重新select文件。
点击故事板中的一个不同的视图控制器,然后点击它的自定义类下拉菜单来确认新的类被列出,但不要select它。 点击你制作的新视图控制器,你应该看到它现在列在它的自定义类下拉菜单中。 奇怪的,呃? 只是强制刷新我想。
我有同样的问题,但没有其他解决scheme为我工作。 我的问题是,我有一个Mac和iOS的目标,都与他们自己的版本相同的视图控制器。 例如,我有一个名为FooViewController for Mac的.h / .m对文件和另一个名为FooViewController for iOS的.h / .m文件对。 每对都适当地包括在各自的目标,但由于某种原因,Xcode不喜欢它,我的视图控制器不会显示在故事板的视图控制器中的自定义类下拉列表中。 我最终在iOS视图控制器中重命名了我的类,并立即显示在下拉菜单中。
碰巧碰到这个问题,在尝试了以前的build议之后没有运气。 最后我发现原因是头文件的types设置为C++ header
。 将其更改为C header
(与所有其他头文件一样)后,该类将出现在下拉列表中。 不知道为什么…可能有助于其他人,所以我张贴在这里。
请确保最初不将CustomViewController添加到任何组或文件夹。 把它放在你的应用程序的根目录下。
以上(或以下:)没有帮助我。 虽然我发现了
- 在添加新的视图控制器到故事板(只需拖动它)
- 并通过File \ New \ File \ Objective-C Class添加我的类,给它一个名称,没有XIB,下一步,创build
如果我在故事板中select我的视图控制器并尝试将其分配给我的类 – 我的类不在那里
但
如果我点击viewcontroller本身的视图,然后点击自定义类中的类下拉菜单
接着
selectviewcontroller(点击viewcontroller下面的一个栏),现在再次点击自定义类中的类下拉菜单我新添加的类魔法显示。
奇怪,必须是一个令人耳目一新的错误。 Xcode版本5.1(5B130a)
确保您select了要将课程附加到的视图控制器。 简单的方法是打开Document Outline
,select你的视图控制器(当你点击它形成故事板有时它根本不select你的意思)。
故事板正在寻找自定义类,但实际上它没有在那里,它不显示在列表中的自定义类名,也没有显示出口。 以下解决scheme完全为我工作。
- 只要复制你的代码在其他地方(让我们说在桌面上)
- 打开你现有的代码。
- 删除自定义类文件(移至垃圾箱)
- 现在从复制的项目文件夹(从桌面)
- 不要忘记选中“如果需要复制”checkbox
- 打开故事板和宾果游戏,你将得到你的自定义类文件在下拉菜单中
对于我的情况,以某种方式捆绑资源被删除,所以我加回来,工作!
构build阶段 – >添加构build阶段 – >复制包资源find您的文件然后拖放您的文件
然后确保您的目标会员资格被检查。
在我的情况下,我select了错误的UI ..所以我删除了类文件,并创build一个新的,并select正确的父类
我不得不重新启动XCode 7.3(7D175)
对我而言,单击Project Navigator中的文件,然后在“位置”下拉框下方的“文件检查器”下的“标识和types”下,单击小文件夹图标,然后在popup窗口中select文件。
在我的情况下,我拖动一个新的TableViewController对象的故事板,但我添加了一个新的文件,它的子类是“UIViewController”….然后,我添加一个文件的子类是“UITableViewController”,问题解决!
尝试清理您的项目,并重新启动您的Mac。 我做的一个特殊的事情是改变所有的自定义类名称,并再次build立项目。 有效!
确保ViewController
的类名是你想要的名字。 即
class MyCustomNameViewController: UIViewController { . . }
只改变文件名是不够的。