【发布时间】:2013-03-27 02:35:42
【问题描述】:
当我犯了一些热键失误或错误时,我可能搞砸了设置或其他东西。不确定,但通常我可以 ctrl+click 并拖动到“文件所有者”,我之前制作的插座会正确显示。
现在没有了。不知道如何解决这个问题。
【问题讨论】:
-
现在只显示“委托”。
标签: objective-c xcode
当我犯了一些热键失误或错误时,我可能搞砸了设置或其他东西。不确定,但通常我可以 ctrl+click 并拖动到“文件所有者”,我之前制作的插座会正确显示。
现在没有了。不知道如何解决这个问题。
【问题讨论】:
标签: objective-c xcode
"...通常我可以 ctrl+click 并拖动 到 "File's Owner""
在您的控制器类中添加额外的IBOutlets 后,您通常可以通过将控制器对象从拖到到视图项,而不是反过来。 (这里,控制器对象通常是File's Owner、“应用程序”或实例化的自定义控制器对象)。
不太频繁地,您可以将视图本身从拖到到控制器对象或其他视图对象,以设置特定于类的IBOutlets delegate, 和/或 dataSource, menu, formatter 等。例如,NSTextField 将 delegate 和 formatter IBOutlet 添加到 NSView@3 和 @9876543 nextKeyViewIBOutlets.
因此,您可能需要仔细检查您是否朝着相关对象的正确方向拖动。
如果您知道自己正在朝着正确的方向拖动,并且 Interface Builder 的行为不像通常应该的那样,那么您可以尝试一些事情。
首先,如果您向控制器类添加了额外的 IBOutlets 并尝试在 Interface Builder 中连接它们,请仔细检查您是否确实为所需的视图对象指定了正确的类。例如,要添加一个新的 IBOutlet,我有时会复制现有的一行,比如IBOutlet NSTextField *textField;,然后粘贴它。然后我会将名称更改为tableView(目的是将IBOutlet 连接到NSTableView),但我会忘记将NSTextField 更改为NSTableView。因此,当我去 Interface Builder 并尝试通过从控制器类拖动到 NSTableView 来“连接”IBOutlet 时,它不会显示弹出菜单,因为表格视图和文本字段是 2 种不同类型的对象.
其次,您可以发布 .h 文件的内容。您可能忘记了;,或者以其他方式创建了导致.h 文件解析(通过Xcode,然后将结果传递给Interface Builder)的可能情况在中途失败。发生这种情况时,它可以防止许多 IBOutlets 等出现在 IB 中。您也可以尝试按原样编译代码,以帮助找出问题所在。我自己偶尔也会这样做。
【讨论】:
不确定是否存在会导致此行为的键盘快捷键,但只是为了确定您应该检查以确保您希望看到的插座出现在 Connections Inspector(右手边的 Utilities 抽屉)中。请记住,当您在项目中选择元素时,此面板会发生变化。
如果您在检查器中看到正确的插座,但仍然没有获得所需的 ctrl+click 行为,我会尝试重新打开您的项目、重新启动 XCode 或查找并删除 XCode prefs 文件。
祝你好运!
【讨论】:
我遇到了同样的问题:
但我无法将 IB 中的控件连接到插座。问题是我没有将 IB 中的 TableViewController 类与我在 Xcode 中创建的类关联起来。解决方法:在IB的Identity inspector中为TableViewController指定Custom Class。
【讨论】: