NSTableView问题 - 使用SplitView面板显示自定义TableView

时间:2014-09-18 11:23:05

标签: objective-c macos cocoa nstableview nsview

我正在为OSX开发我的第一个应用程序。很抱歉提出愚蠢的问题。我花了几个小时试图自己解决这个问题,到目前为止没有运气。

我想制作类似iTunes的界面。我使用了NSSplitView,将NSView用于导航,将NSTableView放在上面。 [我知道有更好的替代NSSplitView,但我的目标是两者 - 开发一个应用程序,并在此过程中学习Cocoa / OSX。] 在指定用于导航的NSView面板上,我正在尝试放置NSTableView。但是,我的表格没有显示。因此,我有疑问......

据我所知,对于要填充的单元格,控制器必须实现NSTableViewDataSource。我试过了,但到目前为止还不成功 - 到了我没看到桌子的地步。请指教:

  1. 我是否可以使用NSTableView派生的自定义类来实现NSTableViewDataSource?如果这不起作用,请告知原因或指出我的解释。
  2. 我认为所有元素都可以通过编程方式进行操作是正确的,因为我在标题中使用IBOutlet指向正确的对象,而对InterfaceBuilder没有任何作用 - 从Objective-C代码中控制所有内容?我必须使用IB吗?
  3. 谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 是的,这将有效,但这是一种不寻常的方法。通常tableview委托/ datasource是封闭tableview的东西。如果您需要一些默认情况下未提供的其他功能(对我来说是输入的自定义行为),您通常只会继承NSTableView
  2. 是的,你可以通过编程方式完成所有工作,但是你会发现使用IB要容易得多。 IB加载的视图是使用nib文件中包含的信息以编程方式创建的。你很快就会发现它冗长乏味。
  3. 在没有看到表的情况下解决您的问题,您需要在几个关键的委托/数据源方法上添加日志/断点以确保它们被调用(从它们的父亲numberOfRowsInTableView:开始)。如果它们不是那么你没有在tableview中正确设置委托/数据源。