我是 Objective-C 和 Cocoa 编程的新手(来自多年前在其他平台上进行 C/C++ 开发的背景)。我正在编写一个应用程序来定期(即每 X 秒)下载远程数据,对其进行解析,将其排序/过滤到 NSArray 中,并在 NSTableView 中显示/更新所述数据。在阅读了几本书、大量 Apple OS X 引用资料并进行实验之后,我已经成功实现了所有内容(远程数据下载、解析/过滤逻辑、内存存储等),除了实际用数据更新 NSTableView 之外。
我不确定我是否只是错过了一些明显的东西,或者我的应用程序应该如何按照 MVC 概念进行布局,或者 Interface Builder 缺乏实际的代码生成是否只是我不习惯的,但我似乎无法确定如何以编程方式访问/操作在 Interface Builder 中创建的 NSTableView。
我尝试(在 Interface Builder 中)将基于 NSArray 的对象的 NSObject 实例拖动到其中,然后我可以连接我的 NSTableView 的 Outlet/数据源,但这会导致我的基于 NSArray 的对象的另一个实例(不连接NSTableView 到我现有的、以编程方式声明和实例化的对象)。同样,我想以编程方式设置 NSTableView 的数据源,但我无法确定如何以编程方式引用存储在 .xib/.nib 文件中的 NSTableView 对象,而不是通过标签(为此我无法在 Interface Builder 中设置 NSTableView 的 Tag 值后,确定从哪个对象调用 viewWithTag:
方法)。
如有任何建议、意见或指导,我们将不胜感激。这感觉像是非常简单的事情之一(一旦我让它在我面前工作,它就会变得更有意义),但我似乎无法得到一个有效的起点/示例。
最佳答案
您需要将表 Controller 类中的实例变量附加到界面生成器中的表。在你的类中声明一个表,如下所示:
IBOutlet NSTableView* myTable;
...
@property (nonatomic, retain) IBOutlet NSTableView* myTable;
并且一定要合成它。
在界面生成器的信息窗口的连接选项卡中,将 Controller 的新 socket 连接到您的 table 。然后,当您的 View 从 XIB 加载时,此 socket 将被连接。
希望对一些人有帮助。
关于objective-c - 如何以编程方式访问在 Interface Builder 中创建的 NSTableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368659/