0

我有一个 SourceList (NSOutlineView),我想显示一些项目的上下文菜单。环顾四周,我在 Cocoa 和 Obj-C 中找到了答案,但我试图在 MonoMac 和 C# 中做到这一点。

在我看来,我需要做自己的自定义类,它继承自 NSOutlineView 并实现方法 MenuForEvent。但是当我尝试用我自己的自定义类替换旧的标准 NSOutlineView 时,运行时没有任何显示。在我的控制器中,我调用 View.ReplaceSubviewWith(oldTree, newTree)。

我需要做其他事情吗?或者也许还有另一种方法可以做到这一点?

4

1 回答 1

1

而不是尝试像那样交换实例,您应该能够以声明方式进行。

确保您“注册”您的自定义大纲视图,例如:

[Register("MySourceList")]
private class MySourceList : NSOutlineView
{
    // Need this constructor for items created in .xib
    public MySourceList(IntPtr handle) : base(handle)
    { }

然后,在 Xcode 设计器中,选择您的大纲视图并指定您注册为该对象的自定义类的名称:

在此处输入图像描述

这样,当从 nib 创建视图时,运行时将首先创建大纲视图的正确实例。

于 2013-08-22T14:33:08.037 回答