【问题标题】:Populate SourceList in Xamarin.Mac app在 Xamarin.Mac 应用程序中填充 SourceList
【发布时间】:2013-07-08 03:18:01
【问题描述】:

我正在使用 Mono 和 Xamarin Studio 创建我的第一个 Mac 应用程序,因为我计划重用我从 Windows 版本获得的一些 C# 代码。所以我对 XCode 和 Mono 都是全新的。我刚刚开始学习所有 Cocoa 的东西。

我正在尝试创建一个类似于 Finder 中用于导航的侧边栏。到目前为止,我发现我应该使用 SourceList 对象,并使用 XCode 中的 Interface Builder 将其添加到我的界面中。但是如何使用标题和项目(带有图标)填充它?

默认情况下,我在 IB 中看到一个示例标头和一个示例项,但是当我从 Xamarin Studio 运行我的应用程序时它们没有显示。 SourceList 只是空的。

有没有其他人做过类似的事情?我找不到任何关于如何正确填充 SourceList 的好的示例或教程。

编辑:

我现在终于找到了答案。这是 TheNextman 的回答和他对后续问题的回答的组合:Create NSView programatically in Xamarin Studio

【问题讨论】:

    标签: c# macos cocoa mono xamarin


    【解决方案1】:

    This answer 将帮助您使用数据填充源列表(它只是一个样式化的 NSOutlineView)。

    由于源列表是“基于视图”的,因此您需要从NSOutlineViewDelegate 协议中实现一些额外的方法。在我脑海中浮现:

    outlineView:isGroupItem: - 指定项目是否为“标题” outlineView:dataCellForTableColumn:item: - 返回给定列/项目的单元格

    【讨论】:

    • 我以前见过这个答案,但它只给了我对齐错误的文本。没有标题或图标。我不熟悉objective-c,在C#中这样做。那么你能解释一下“outlineView:dataCellForTableColumn:item:”吗?这是一个方法名吗?
    • 我建议你熟悉 Cocoa 中使用的委托模式,否则这一切都会很混乱:developer.apple.com/library/mac/#documentation/General/…。接下来你可以学习如何将它应用到 C# - 我找不到任何适用于 Mac 的特定文档,但有示例并且 iOS 文档也涵盖了它:docs.xamarin.com/guides/ios/application_fundamentals/…(在 Mac 上足够相似)
    • 我仍然认为我没有完全理解。我创建了一个新类,它继承自 NSOutlineViewDelegate 并实现了 IsGroupItem 和 GetCell 方法(仅返回 new NSCell("Foo"))。然后我设置MyOutlineView.Delegate = new MyDelegate()。但仍然没有任何显示。
    • 我确实收到了这些物品,但没有文字或任何东西。它们是可选择的,并且似乎有标题和常规项目。我试图覆盖 GetCell 和 GetSelectString 方法,但没有成功。还有一个 GetView 方法,我可以覆盖它,但我不知道如何返回包含文本的视图。
    • 感谢您的精彩!现在我只需要修复隐藏/显示,但我会尝试自己解决这个问题。再次感谢!
    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多