在Xcode 4.2中查找文件所有者

16
请查看下面的图片,帮我找到这个类的文件所有者。
通常我会将我的UILabel连接到它,但是,可惜,我找不到它。
问题:我应该将标签连接到什么?
故事板: enter image description here 同时,类设置如下: enter image description here

我认为你应该接受 PREM 提供的答案。 - Roger C S Wernersson
4个回答

10

由于storyboards没有所有者,您可以使用视图控制器(View Controller)代替。

通过Ctrl点击(或右键单击)标签,并将蓝色线连接到橙色的视图控制器(View Controller)上。


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

你的回答简短、精炼且切中要点。它应该被接受作为答案。然而,我不理解在这种情况下“scene”是什么意思。 - Roger C S Wernersson
“场景”是用于描述故事板中控制器的较新术语。 - whyoz
2
对于那些不太熟悉故事板的人,请查看http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1和http://klanguedoc.hubpages.com/hub/IOS-5-A-Beginners-Guide-to-Storyboard-Connection,了解如何将IBOutlets和操作直接连接到您的代码。 - whyoz

4
您提出了故事板和Nib的一个关键区别:当加载一个Nib时,需要指定一个拥有者实例,但是故事板没有加载所有者,因此在故事板中没有文件所有者。您的ViewController实例由故事板创建并在场景中代理(列为View Controller),因此可以在它与界面项之间建立连接。但是如果您想要与不在故事板中表示的已存在实例形成连接,则必须以其他方式确定该实例(例如按标记)并在运行时查找并在故事板加载后在代码中建立连接。
例如,在此代码中,我手动加载一个Storyboard(以在弹出窗口中使用其初始场景),然后从其中的某些工具栏按钮形成连接:
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];

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

我不太理解这个答案。我该如何精确地访问标签?一段代码会非常有帮助。谢谢。 - Redfox

-1

菜单:导航 - 在项目导航器中显示 在项目导航器中,点击“主故事板” 菜单:视图 - 显示辅助编辑器 你应该在左侧看到故事板和标签,右侧是视图控制器.h文本。 点击标签,按住控制键,将蓝色线条拖到右侧的View Controler.h源代码上。输入一个引用名称(例如myLabel),然后点击连接。

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

在View Controler.m中,你会看到类似于这样的生成: @synthesize *myLabel;

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


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