16

请看一下下面的图片,帮我找到班级的文件所有者。

通常我会将我的 UILabel 连接到它,但是,唉,我找不到它。

问题:我应该将我的标签连接到什么?

故事板: 在此处输入图像描述

同时班级设置为

在此处输入图像描述

4

4 回答 4

10

右键单击标签并连接到视图控制器场景

于 2011-11-02T09:07:29.010 回答
10

由于情节提要没有所有者,因此您可以改用视图控制器。

Ctrl 单击(或右键单击)标签,拖动蓝线与橙色视图控制器连接。

于 2012-01-16T11:35:10.660 回答
4

您已经找到了故事板和 nib 之间的关键区别:加载 nib 时,会指定所有者实例,但故事板未加载所有者,因此故事板中没有文件的所有者。您的 ViewController 实例由情节提要创建并在场景中代理(列为 View Controller),因此您可以在该实例和界面项之间绘制连接。但是,如果您想与情节提要中未表示的已存在实例建立连接,则必须以其他方式(可能通过标记)识别该实例并找到它和运行时并在之后的代码中形成连接故事板加载。

例如,在这段代码中,我手动加载了一个故事板(在弹出窗口中使用其初始场景),然后从其中的一些条形按钮项形成连接:

UINavigationController* nav = 
    (UINavigationController*)[[UIStoryboard storyboardWithName:@"Storyboard" 
                                                        bundle:nil] 
                               instantiateInitialViewController];

// there is no file's owner...
// so we can't just draw the connection from button items to ourself,
// because we are not proxied in the storyboard
// so, locate the button items in some other way and do it in code

UIViewController* root = [nav.viewControllers objectAtIndex: 0];
[root.navigationItem.leftBarButtonItem setTarget:self];
[root.navigationItem.leftBarButtonItem setAction:@selector(save:)];
[root.navigationItem.rightBarButtonItem setTarget:self];
[root.navigationItem.rightBarButtonItem setAction:@selector(cancel:)];

在某些情况下,您可以使用一个技巧将任意现有实例注入到场景中,以便与其建立连接:使该实例成为第一响应者。每个场景中都有一个第一响应者代理,因此可以通过在情节提要中绘制来为您提供一些连接。所以,这段代码可以代替上面的代码工作:

[self becomeFirstResponder];
UINavigationController* nav = 
    (UINavigationController*)[[UIStoryboard storyboardWithName:@"Storyboard" 
                                                        bundle:nil] 
                               instantiateInitialViewController];

(并且已经在场景中绘制了从每个按钮到第一响应者代理对象的按钮动作连接。)

于 2011-11-12T00:35:41.620 回答
-1

菜单:Navigate - 在 Project Navigator 中显示 在 Project Navigator 中,单击“Main Storyboard” 菜单:View - Show Assistant Editor 您应该在左侧有带有标签的 Storyboard,而在右侧有 view controler.h 文本。单击您的标签,按住控制按钮,然后将一条蓝线拖到右侧的 View Controler.h 源代码中。输入参考名称(例如 myLabel),然后单击连接。

你会自动看到类似这样的生成:@property (weak,nonatomic) IBOutlet UILabel *myLabel;

在 View Controler.m 中,您将看到生成如下内容:@synthesize *myLabel;

在您的 IBAction 事件中,您可以设置标签:myLabel.text =

于 2012-07-17T19:46:43.540 回答