将Storyboard添加到现有项目中

24

我已经创建了一个没有故事板支持的项目,但后来我加入了一个故事板。故事板可以正常工作,当在模拟器中加载应用程序时,我可以看到其内容。

然后我创建了一个视图控制器(UIViewController),我的问题是我无法将任何控件从故事板绑定到我的控制器。

所以我的问题是如何将我的控制器与故事板连接起来。

6个回答

39

具体步骤(我使用的是 XCode 4.5 和 iOS 6.0):

  1. 通过 File->New->File...->Userinterface->storyboard 添加新的故事版到项目中。
  2. 转到项目概要并选择 MainStoryboard,然后选择刚创建的故事版名称。
  3. 在 AppDelegate.m 文件的方法 didFinishLaunchingWithOptions 中,除了最后一个返回 YES 的语句外,注释掉所有内容。

就这些了。现在你应该能够在启动项目时看到你的初始视图。


26

针对XCode 6和iOS8 beta2:

  1. 创建一个Storyboard文件(我们称之为Main.storyboard),选择iPhone或iPad设备类型。
  2. 在空白的Main.storyboard文件中,从对象库中拖出一个UIViewController。
  3. 如果Storyboard旨在用作通用Storyboard,则切换到文件检查器(位于右侧的工具栏中),并勾选“使用尺寸类”。
  4. 在Storyboard中选择View Controller,并切换到身份检查器(位于右侧的工具栏中),在“Class”字段中输入您的View Controller的名称。
  5. 在Navigator部分的“Supporting Files”文件夹中找到“info.plist”文件。
  6. 通过单击“信息属性列表”键右侧的“+”符号添加一行。
  7. 选择“Main storyboard file base name”键,并在“Value”字段中输入您的Storyboard文件的名称(在此示例中将其称为“Main”)。
  8. 在AppDelegate.m / AppDelegate.swift中,在方法/函数“application:didFinishLaunchingWithOptions:”中删除除“return YES”(对于Objective-C)或“return true”(对于Swift)之外的所有代码。

3
通过在目标的“部署信息”主界面中的下拉菜单中选择Main.storyboard,可以避免5到7点的问题。 - Teo Sartori
1
同意。我更喜欢提供一些“引擎盖下面”正在发生的事情的信息。 - Raz
我有一个非常古老的项目,我还必须更改main.c文件以指定AppDelegate类,如以下答案中所述https://dev59.com/Q2Qm5IYBdhLWcg3w2SH3#17278607。 - dishan

9
我已经找到了自己问题的答案。很简单:我应该打开storyboard,选择视图控制器(它是在storyboard上的可视化表示),然后进入身份检查器,将类UIViewController替换为您的控制器类。

我有一个和你类似的问题。我有一个已经存在的项目,开始时没有使用storyboard。现在我想向我的项目中添加storyboard,以便更轻松地添加图像并移动标签。你能帮我吗?到目前为止,我已经添加了一个storyboard,并将视图控制器放在了画板上。但是我的视图控制器类在身份检查器下不会显示出来。 - Moonhead

1
  1. 添加Main.storyboard文件

  2. 在Info.plist中添加一行 > Main storyboard file base name:Main

  3. 编辑代码:

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //应用程序启动后的自定义入口点。返回YES; }

1
你是否检查过想要连接的控件在控制器中是否有对应的IBOutlet或IBAction?如果有,那么你应该能够像平常一样将它们连接起来。

嗯,不是这样的... 当我创建故事板项目时,只有当我将控件拖到控制器上时才会创建出口和操作。现在正在检查。 - glebreutov
当您使用助手将控件插入代码中时,连接会自动建立。当您随后创建故事板并将控件放置到故事板中而不触摸控制器时,您应该手动完成此操作。 - konturgestaltung
我已经手动添加了标签属性,但没有任何结果 :( - glebreutov

0

别忘了检查 main.m 文件:

#import <UIKit/UIKit.h>
#import "YourAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class]));
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接