设置视图控制器的插座/操作

时间:2013-05-14 15:59:17

标签: ios xcode uiviewcontroller

我在View Controller中有一个UIButton,它不是我应用中的根视图控制器。我无法在头文件中拖动并为其创建插座或操作。我只能从根视图控制器中完成。

这有一个简单的原因吗?

5 个答案:

答案 0 :(得分:4)

使用storyboard时,XCode只为第一个视图控制器创建.h和.m文件(名为ViewController.h和ViewController.m)。

对于通过Interface Builder添加的每个其他视图控制器,您应手动添加其他自定义类文件以自定义视图控制器。

通过Interface Builder将视图控制器添加到故事板后,请按照以下说明操作:

  1. 从主XCode菜单中选择File,New,File,然后选择 Objective-C类,然后单击“下一步”。命名自定义类,然后选择 您添加的视图控制器的正确类型(即 为表视图控制器选择UITableViewController
  2. 在XCode的Interface Builder中,选择新的视图控制器,并从Identity Inspector选项卡中,将类设置为刚刚创建的新类。
  3. 然后,您应该可以按住CTRL键单击任何UIButtons或其他UI元素到新的.h或.m文件中,并为该视图实现任何自定义行为。

    如果您没有创建文件来实现自定义类,那么您将无法使用默认的UI类,例如UIViewController,它们只有默认行为,除非您使用自定义类扩展它们。

    每个视图控制器通常需要一个.m和.h文件。

答案 1 :(得分:0)

您是否正在尝试拖入该viewController的头文件?我猜你在使用故事板而不是xibs?我想我们需要更多细节。截图可能?

听起来你的助手看错了。您可以在助手视图的左上角下拉列表中将其更改为该视图控制器的匹配头文件。但正如我所说,我们需要更多细节。

答案 2 :(得分:0)

您可以将UIButton连接到定义为视图控制器一部分的插座。

如果您还将该插座设为属性,则可以向其他视图控制器公开并使该按钮可用于设置/获取/查询/等。后一种情况只有在按钮托管视图控制器存在于内存中时才会起作用(至少在最初阶段,假设视图控制器中的按钮可见,并不会出现第一个控制器可见的同时)

答案 3 :(得分:0)

是的,有一个简单的原因,虽然在你的情况下很难说出这个简单的原因是什么,因为你没有提供足够的信息。基本上,这一切都归结为视图控制器的工作方式以及它们如何从故事板加载/实例化。简短版本:

  • 您只能在同一“场景”中的对象之间进行插座/操作。

  • 出口/操作很复杂:如果代码中有相应的IBOutlet / IBAction,则只能创建一个。 Xcode可以帮助创建它作为插座/动作创建过程的一部分,但这仅仅掩盖了两个事实,即代码中的IBOutlet / IBAction和笔尖/故事板中的插座/动作。

通过阅读我的书中关于笔尖真正起作用的章节,你可能会得到进一步的帮助:

http://www.apeth.com/iOSBook/ch07.html#_nib_loading_and_file_8217_s_owner

这同样适用于故事板,它实际上只是将多个笔尖组合成单个文件的一种方式。然而,故事板会增加一些复杂性,因为你可以在对象之间拖动另一种类型的东西,即 relationship segue (它可能是你不小心创造其中一个):

http://www.apeth.com/iOSBook/ch19.html#_storyboards

答案 4 :(得分:0)

确保NIB的文件所有者设置为正确的类。从 Interface Builder 中选择文件所有者,并确保在 Identity Inspector 选项卡中设置了正确的类:

enter image description here

相关问题