请浏览下面的图片并帮我找到班级的文件所有者。
一般情况下,我会将我的UILabel连接到它,但是,唉,我找不到它。
问题:我应该将我的标签连接到哪个?
故事板:
同时课程设置为
答案 0 :(得分:10)
右键单击Label并连接到View控制器场景
答案 1 :(得分:10)
由于故事板没有所有者,您可以使用View Controller。
按住Ctrl键单击(或右键单击)标签,拖动蓝线以连接橙色View Controller。
答案 2 :(得分:4)
您已经掌握了故事板和笔尖之间的关键区别:当加载nib时,指定了所有者实例,但故事板未加载所有者,因此故事板中没有文件所有者。您的ViewController实例由故事板创建并在场景中代理(列为视图控制器),因此您可以在该场景和界面项之间绘制连接。但是,如果要与故事板中未表示的已存在实例形成连接,则必须以其他方式(可能通过标记)识别该实例并找到它并运行时并在代码中形成连接故事板加载。
例如,在此代码中,我手动加载一个故事板(在弹出框中使用其初始场景),然后从其中的一些条形按钮项形成连接:
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];
(并且从每个按钮到第一个响应者代理对象的场景中绘制了按钮动作连接。)
答案 3 :(得分:-1)
菜单:导航 - 在Project Navigator中显示 在Project Navigator中,单击“主故事板” 菜单:查看 - 显示助理编辑器 你应该让左边的Storyboard带有你的标签,右边的是controler.h文本。 单击标签,按住控制按钮,然后将蓝线拖到右侧的View Controler.h源代码中。输入引用名称(例如myLabel),然后单击“连接”。
自动地,你会看到这样的东西: @property(弱,非原子)IBOutlet UILabel * myLabel;
在View Controler.m中,你会看到这样的内容: @synthesize * myLabel;
在您的IBAction活动中,您可以设置标签: myLabel.text =