создайте подкласс NSView, чтобы включить setTag()

Я использую xamarin для разработки приложения для Mac, и где-то в моей программе я хочу установить тег NSView. Однако свойство тега доступно только для чтения для NSView, поэтому я ищу способ создать подкласс, в котором тег доступен для записи. Есть ли какие-либо предложения о том, как мне написать подкласс? Благодарность


person Xiangyu    schedule 05.06.2017    source источник


Ответы (2)


public class MyNSView : NSView
{
    public nint _tag;

    public new nint Tag
    {
        get
        {
            return _tag;
        }
        set
        {
            _tag = value;
        }
    }

Имейте в виду, что это больше не тег NSView.

Использование собственного тега NSView

var view = new MyNSView ();

view.Tag = 100;
person pinedax    schedule 05.06.2017

Я нашел обходной путь, чтобы заставить viewWithTag работать:

@IBInspectable
override var tag: Int {
    get { return super.tag  }
    set { super.tag = newValue } 
}

В IB тег NSView по-прежнему неактивен, но есть также тег подкласса, доступный для установки значения.

Тем не менее, как я ни старался, я не могу найти логическую причину, по которой тег неактивен в IB.

person cyanide    schedule 26.07.2018