Tho*_*mas 9 xcode cocoa nsstoryboard
我有一个基于文档的应用程序.我刚在故事板中创建了菜单项,在视图控制器中创建了IBActions.但是,将动作连接到目标的常用方法不起作用
-(IBAction) markAsHidden:(id)sender;
-(IBAction) markAsVisible:(id)sender;
-(IBAction) toggleHidden:(id)sender;
Run Code Online (Sandbox Code Playgroud)
这是我从菜单项中看到的内容,我按Ctrl键并从菜单中单击鼠标到View Controller.它没有显示我的IBActions.
任何的想法 ?我的2美分猜测是它与基于文档的应用程序有关,但......不太确定

Mar*_*zyk 19
将菜单项连接到应用程序场景的First Responder.当您连接到应用程序场景的First Responder时,您的视图控制器的IBActions应出现在HUD的可用操作列表中,而不是屏幕截图的HUD中显示的操作segue.
Cal*_*leb 10
为什么我不能将菜单连接到我的视图控制器IBAction?
因为您的菜单项和视图控制器位于故事板中的不同场景中.您可以将场景视为从故事板加载场景时实例化的对象的独立图形.不同场景中的对象无法在故事板中连接在一起,因为它们不会同时加载.
只是为了好玩,尝试在故事板中的应用程序场景中创建视图控制器的实例.为此,您可能需要将一个普通的旧NSObject实例拖到场景中,然后设置其类型.执行此操作后,您会发现可以按照预期将菜单项中的连接拖动到该视图控制器,但不能将连接拖动到不同类型的不同对象中现场.
注意:一旦你玩到足以让自己说服它有效,记得删除你添加的视图控制器.没有视图的视图控制器就像没有嘎嘎声的鸭子,视图控制器及其视图层次结构应该在他们自己的场景中.
我的2美分猜测是它与基于文档的应用程序有关
不,它与此无关.在基于文档的应用程序中,您遇到同样的问题.如果您的应用程序是基于.xib而不是使用故事板,那么您也会遇到同样的问题,因为您尝试连接的控制器将位于完全不同的.xib文件中.
正如Mark所描述的那样,简单的解决方案是使用响应链.在第一响应者代理对象是每一个场景的一部分,所以你可以随时对其进行的连接.当您将菜单项连接到First Responder时,它的目标将是nil,它告诉NSMenu您走动响应者链,直到找到响应菜单项的操作消息的对象.然后它将消息发送到该对象.
| 归档时间: |
|
| 查看次数: |
4307 次 |
| 最近记录: |