11

我对IOS开发很陌生,在这里我遇到了一个我以前没有遇到过的问题。这是我所拥有的:

我创建了一个项目,添加了一些附加到他们自己的类的 ViewController。但是现在,我只是在情节提要中添加了一个新的 ViewController。然后我创建了一个新的 Objective-C 类(其中是 UIViewController 的子类)。问题是在 IB 中,我无法将 ViewController 链接到新创建的类,因为我根本没有 IB 提供的列表中的类(见下图)。我的新课程名为MapShownViewController,但正如您在图像上看到的那样,它不可用。

在此处输入图像描述

它适用于我所有其他课程,但不适用于这个课程。

这是 MapShownViewController.h :

#import <UIKit/UIKit.h>

@interface MapShownViewController : UIViewController

@end

和 MapShownViewController.m :

#import "MapShownViewController.h"

@interface MapShownViewController ()

@end

@implementation MapShownViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

有人可以解释一下我做错了什么吗?

4

9 回答 9

25

我有这个确切的问题,它让我发疯。我是在将 XCode 从 4.1 升级到 4.4 后第一次注意到它。我有一个现有的项目,我一直在使用旧版本的 XCode,我在 4.4 中继续处理它。我完全按照您的做法在故事板中创建了一个新视图,然后创建了子类文件,但是该类在 IB 的“自定义类”下拉列表中不可用。经过多次谷歌搜索和沮丧后,我求助于退出 Xcode(完全退出,而不仅仅是关闭)然后重新启动它。然后就像魔法一样,这一切都开始工作了,新的类在 IB 自定义类下拉列表中立即可用。

于 2012-08-14T12:19:52.827 回答
17

遇到同样的问题,重新启动 XCode 没有帮助。您始终可以右键单击情节提要并选择Open As > Source Code. 在 XML 文件中找到您的视图控制器元素并添加一个customClass属性:

<viewController title="Login" id="TJH-Bg-q4u" customClass="XYZLoginViewController" sceneMemberID="viewController">
   ...
</viewController>

手动覆盖 FTW :)。

于 2013-12-10T18:29:19.253 回答
4

为此,您必须确保以下几点:

1) 添加到情节提要的元素是UIViewController

2) 你定义的类有UIViewController作为它的超类

@interface MapShownViewController : UIViewController

3)该类正在项目中正确构建。

于 2012-08-14T11:12:31.460 回答
4

检查您的项目设置。xcode->targets->build phase->compile sources 你的 viewcontroller 的实现文件必须添加到这个列表中。

于 2012-08-14T10:50:59.607 回答
1

我一直遇到这个问题并尝试了此处发布的所有其他解决方案。

对我有用的是在创建自定义类后设置正确的超类。然后您应该能够从类下拉列表中找到并选择它。

例如

class LabsViewController: UITableViewController {
于 2016-04-27T00:43:55.177 回答
0

我必须设置从 UIViewController 继承并充当 UITableViewController 的表视图控制器的自定义类。我做了一个简单的技巧,只是将我的自定义类继承更改为“:UITableViewController”,然后我可以自由地将这个类设置为控制器。当然,在它设置之后我改变了继承。

于 2015-03-16T16:20:12.567 回答
0

检查您是否确实在新班级中选择了正确的超级班级。有时你会创建一个由 UITableVIewController 继承的视图控制器。这不能应用于 Storyboard 中的 ViewController 模式。

于 2012-08-14T10:50:34.513 回答
0

只是添加另一个可能的解决方案来帮助解决我的问题,因为其他人没有。

我注意到使用 Command+Shift+O 搜索我的自定义视图控制器文件时找到了它,但是我看不到该文件在哪个文件夹中,所以我注意到由于某种原因我的自定义类从项目中丢失了,但是仍在搜索中找到。

我所要做的就是再次将文件移动到项目中,瞧!

希望这可以帮助将来的人。

于 2016-03-07T08:07:54.057 回答
0

我在 Mac OSX 应用程序上使用 Xcode 7.1.1 时遇到了同样的问题。我尝试了其他答案中的所有建议——没有成功。

最后我删除了我的视图控制器文件并创建了全新的。
然后它突然起作用了......

于 2016-02-05T15:02:06.353 回答