如何在 Xcode 中获取 UI 对象
Posted
技术标签:
【中文标题】如何在 Xcode 中获取 UI 对象【英文标题】:How to obtain UI object in Xcode 【发布时间】:2018-11-03 20:40:53 【问题描述】:我想用配对的蓝牙设备列表填充UITableView
,但我不确定如何获取视图对象以便填充它。在 android 下,每个 UI 元素都分配有一个资源 ID,用于获取特定 UI 元素的实例,但我不确定这在 ios 中是如何完成的。
在我的 ViewController 类中,我有这个:
@IBOutlet weak var btListView: UITableView!
我希望将此变量分配给我的主故事板上的 Tableview 实例,大概是在 viewDidLoad() 中。
此外,当我尝试通过在情节提要中右键单击它来为视图分配一个出口时,+ 选项在那里,但当我单击新建引用出口时没有任何反应。
【问题讨论】:
如果视图控制器是UITableViewController
,那么与 self.tableView 的连接已经存在。如果您正在执行自定义UIViewController
,那么您可以控制并从表格视图拖动到插座以建立连接。
我想说,即使只是回答这个问题也对你没有太大帮助。我建议更基础的并查找有关如何使用 Storyboards 的简单教程,@IBOutlet
s 和 UITableView
s。
并不是说我们不能或不想提供帮助。我只是觉得你会比在这里来回学习更多并且做得更快。
显然使用 + 新插座在 XCode 中不起作用;控制拖动起到了作用,尽管我仍然看不到连接的位置并假设它在幕后。感谢您的帮助...ed
您需要查看您的视图控制器应该遵循的UITableViewDataSource
方法。特别是在 tableView(_:, cellForRowAt:)
创建单元格的地方,您可以在其中设置它以显示给定索引路径的内容,您可以使用它来获取它所代表的数据。
【参考方案1】:
我希望将此变量分配给我的主故事板上的 Tableview 实例,大概是在 viewDidLoad() 中。
您无需在代码中执行任何操作。只需将表格视图连接到您的故事板中的btListView
出口,您会发现当viewDidLoad()
执行时,btListView
已经引用了表格。这确实是插座的好处……您在设计界面时将它们连接起来,并且当情节提要场景中的对象被加载时,该连接会为您重新创建。
要在情节提要中建立联系,请在情节提要中找到相关场景并查看其中的对象列表。您的视图控制器应该在其中,您可以通过控制单击视图控制器来检查其出口列表。会弹出一个列表,你可以从btListView
出口右侧的小圆圈拖动到表格,也可以从表格控制拖动到视图控制器,然后选择btListView
出口弹出来。
【讨论】:
有效。我还对 XCode、Swift 或核心库在何处/如何实际将 UI 元素与 Swift 出口变量相关联感兴趣。我能说的最好的就是项目文件系统中某处的 .xib 文件中有代码 不,.xib 中没有代码。非常简单地说,.xib 或 storyboard 场景中的对象都是符合 NSCoding 的类的实例,因此 .xib/storyboard 编辑器本质上是序列化对象图。当您调用 UIStoryboard 的init(name:bundle:)
方法或从 .xib 文件加载视图控制器时,对象被反序列化并恢复它们之间的关系。
有趣。关系存储在哪里?
在同一个文件中,以及其他所有内容。您可以使用文本编辑器打开情节提要,并根据需要查看它。对同一对象的多个引用由 NSKeyedArchiver/Unarchiver 处理。阅读有关这些类和 NSCoding 的文档——它是强大的东西,非常有用。
这就是我的想法,但故事板总是在 XCode 中以视觉形式打开。我现在可以使用文本编辑器查看链接。感谢您的指导。以上是关于如何在 Xcode 中获取 UI 对象的主要内容,如果未能解决你的问题,请参考以下文章
创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?